我的代码存在两个问题 - 我不确定如何将populateArray函数与main函数链接;我不确定我需要通过什么论点 此外,我一直在打开要打开的文件的文件路径 - 路径是正确的,文件存在数据。这是我的代码:
network = []
def populateArray():
file = open('theroute.txt', 'r')
network = []
for line in file:
network.append(line)
print "Network = "
print network
file.close()
def main():
if __name__ == "__main__":
populateArray()
任何帮助将不胜感激!
感谢您的回复 - 我的代码现在看起来如上所示,但是当我删除 def main()时:我收到以下错误:
File "populateArray.py", line 18
if __name__ == "__main__":
^
IndentationError: unindent does not match any outer indentation level
答案 0 :(得分:5)
删除def main():
,只需将其设为:
if __name__ == "__main__":
populateArray()
确保在删除def stmt后正确缩进程序。
如果您在同一目录中,也可以直接引用您的文件名。
答案 1 :(得分:1)
要打开的文件的路径是相对于.py文件的位置。例如,如果它们位于同一文件夹中,那么您只需执行
即可file = open('theroute.txt', 'r')
希望这有帮助。
答案 2 :(得分:0)
def parseLine(line):
# do something to input line!
return line.strip().split()
def populateArray(fname, fn=None):
with open(fname, 'r') as inf:
if fn:
return map(fn, inf)
else:
return inf.readlines()
def main():
network = populateArray('/usr/jim/data/theroute.txt', parseLine)
if __name__ == "__main__":
main()
全局变量几乎总是设计不佳的标志
参数化您的功能,以便日后重复使用
希望这有帮助!
答案 3 :(得分:0)
删除第5行(额外的“network = []”)和你不需要的def main()。并将网络作为参数传递给populateArray函数,它将起作用。
network = []
def populateArray(network):
file = open('theroute.txt', 'r')
for line in file:
network.append(line)
file.close()
if __name__ == "__main__":
print "Start"
populateArray(network)
print "Network = "
print network
对于没有路径的文件路径:,您指向Python主目录(例如,Python 2.7的C:\ Python27)
如果使用/指向根目录。指向您的主目录指向目录(例如/home/myuserid/theroute.txt或/Users/myuserid/theroute.txt)
答案 4 :(得分:-1)
如果你想填充全球范围内的“网络”列表(不是“数组”!),你需要将它全局化。
def populateArray():
global network
# The rest of the function code goes here
但是,我宁愿做类似的事情:
network = populateArray()
并使populateArray()
返回network
列表。
或者您可以将网络作为参数传递给函数并对其进行操作(大多数对象在Python中通过引用传递)。请记住,您不能在函数内部执行network = []
,否则引用将丢失并替换为全新的对象。请使用del network[:]
清空列表。
然后,当然,您必须在运行脚本时在函数外部运行某些内容,因此请删除def main()
以仅获取:
if __name__ == "__main__":
populateArray()
或者,如果您想使用main()
函数:
def main():
populateArray()
if __name__ == "__main__":
main()
(虽然在这个例子中它很无用..)
更新:我刚刚注意到您正在调用文件对象file
.. 不要这样做,因为file
是一个名称Python内置对象(实际上由open()
返回的对象),并且修补它不是一个好主意..