使用Python写入文件时遇到了一个奇怪的问题。这是代码:
t = func()
print t
f = open('data_t.dat', 'w')
for i in t:
f.write('%d\n' % (i))
f.close()
我没有从函数中捕获异常,但't'的值可以打印出来如下:
[51535, 96382, 95788, 95293, 94996, 95491, 95392, 96085]
但是无法生成文件。运行代码后没有名为“data_t.dat”的文件。但是,如果我像这样直接使用数据,则可以生成此文件:
t = [51535, 96382, 95788, 95293, 94996, 95491, 95392, 96085]
f = open('data_t.dat', 'w')
for i in t:
f.write('%d\n' % (i))
f.close()
我以另一种方式尝试过。在这种情况下,无法生成文件:
t = func()
t = [51535, 96382, 95788, 95293, 94996, 95491, 95392, 96085]
f = open('data_t.dat', 'w')
for i in t:
f.write('%d\n' % (i))
f.close()
我不明白问题是什么。任何建议都是受欢迎的。谢谢!
跟进:正如亚当·斯密所指出的,目录已在func()中更改。这就是它发生的原因。谢谢你的帮助。
答案 0 :(得分:3)
我有理由确定func
的代码如下:
def func():
os.chdir("somewhere else")
f = open("somefile.txt")
# generate data from somefile.txt
f.close()
return some_data
os.chdir
会更改您的全局状态,因此新的相对路径以"somewhere else"
为根,而不是您运行脚本的目录。简单的解决方法是:
def func():
f = open("full/qualified/path/to/somefile.txt")
...
答案 1 :(得分:-1)
这个问题的第一个原因是代码之后
t = func()
没有达到,因为有些东西打断了它的完成。由于我没有看到func()正文,我无法说明它失败的原因