Python代码不写入文件,除非在解释器中运行

时间:2012-04-01 09:23:18

标签: python interpreter

我在Python中写了几行代码,看看我是否可以让它读取一个文本文件,从列表中自己创建列表,然后将所有内容转换回字符串并将其写为输出在另一个文件上。这可能听起来很愚蠢,但想法是在列出项目后将其洗牌,我需要确保我可以先正确地进行阅读和书写。这是代码:

import csv,StringIO

datalist = open('tmp/lista.txt', 'r')

leyendo = datalist.read()
separando = csv.reader(StringIO.StringIO(leyendo), delimiter = '\t')

macrolist = list(separando)

almosthere = ('\t'.join(i) for i in macrolist)

justonemore = list(almosthere)

arewedoneyet = '\n'.join(justonemore)

with open('tmp/randolista.txt', 'w') as newdoc:
    newdoc.write(arewedoneyet)

newdoc.close()
datalist.close()

当我在解释器上逐行运行时,这似乎工作正常,但是当我将其保存为单独的Python脚本并运行它(myscript.py)时,没有任何反应。甚至没有创建输出文件。在看了这里提出的类似问题后,我介绍了'with'参数(在我通过output = open()打开输出文件之前),我试过刷新以及关闭文件......似乎没什么用。独立脚本似乎没有做太多,但是如果代码在解释器上工作,代码就不会太错了,对吗?

提前致谢!

P.S。:我是Python的新手,对编程很新,所以如果这是因为对基本问题的理解很浅,我很抱歉。

2 个答案:

答案 0 :(得分:4)

输入文件在哪里以及您希望在何处保存输出文件。对于这种脚本,我认为最好使用绝对路径

使用:

open('/tmp/lista.txt', 'r')

而不是:

open('tmp/lista.txt', 'r')

我认为错误可能与此相关

答案 1 :(得分:2)

这可能与你开始翻译的地方有关。

尝试使用绝对路径/tmp/randolista.txt而不是相对路径tmp/randolista.txt来隔离问题。