Python使用函数中的数据写入文件

时间:2016-03-23 15:36:46

标签: python

使用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()中更改。这就是它发生的原因。谢谢你的帮助。

2 个答案:

答案 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()正文,我无法说明它失败的原因