作为当前项目的一部分,我试图将文本文件的内容加载到类对象的列表中,然后输出这些对象。粗略地看了一眼,我的指导老师说我的代码看起来不错,但是没有输出。我按回车键,然后…什么也没有。它甚至不打印“加载”的代码。它只是提示输入一个新的输入,就好像我在没有任何说明的情况下按了enter。我不知道这些对象是否被正确地加载到列表中,我认为它们没有。我只使用Windows控制台来运行这个,所以调试是有限的和缓慢的。在
我是Python的新手,但这不是Python课程,而是算法。但是我们的项目需要用Python编写,所以我在边走边学。我通常用C、C++或java编写代码。我学到的,我从这里学到的,还有我的老师给我的一些有用的教程。我已经在这里搜索过了,但是我看到的很多代码看起来像我所拥有的。所以,我问你们这些非常聪明的人。。。在
我错过了什么?我没有正确地把文件载入内存吗?打印线不正确吗?还有什么我忽略的吗?在
任何帮助都将不胜感激。在
更新:由于下面的好人,它正在运行,但现在我得到了以下错误:
Traceback (most recent call last): File "D:\CPSC335\Project_2\project2.py", line 28, in main() File "D:\CPSC335\Project_2\project2.py", line 24, in main packages.append(DebianPackage(*line.split())) TypeError: init() missing 2 required positional arguments: 'votes' and 'size'
所以,看起来我没有正确地从文本文件中提取数据。这是一个问题吗?在
命令输入:
C:\Python34>python D:\CPSC335\Project_2\project2.py D:\CPSC335\Project_2\packages.txt 5
文件名:软件包.txt在
^{pr2}$代码:project2.py
import sys
class DebianPackage:
def __init__(self, name, votes, size):
self.name = name
self.votes = votes
self.size = size
代码:project2.py(根据下面的帮助更新)
def main():
if len(sys.argv) != 3:
print('error: you must supply exactly three arguments\n\n'+
'usage: python3 <Python source code file> <text file> <n> <W>')
sys.exit(1)
filename = sys.argv[1]
n = int(sys.argv[2])
lines = open(filename).readlines()
print('Loaded "' + filename)
packages = []
for line in lines:
packages.append(DebianPackage(*line.split()))
for package in packages:
print(package.name + ' ' + package.votes + ' ' + package.size)
if __name__ == "__main__":
main()
如果您希望脚本运行,当您通过
python myapp.py
执行它时,请通过以下方式放置或调用主逻辑:升级版:
而且您的类不正确,您应该使用}:
^{pr2}$__init__
,而不是{在模块中定义了一个名为main()的类和函数,但没有调用它。所以在定义之后称之为。放在结尾:
您的代码中还有其他问题。您的构造函数名称必须是:
^{pr2}$最好使用readlines()代替read():
在for循环中使用行。所以你的代码应该是这样的:
相关问题 更多 >
编程相关推荐