Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python代码不写入文件,除非在解释器中运行_Python_Interpreter - Fatal编程技术网

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

Python代码不写入文件,除非在解释器中运行,python,interpreter,Python,Interpreter,我已经用Python编写了几行代码,看看是否可以让它读取一个文本文件,在其中列出一个列表,然后将所有内容转换回字符串,并将其作为输出写入另一个文件。这听起来可能有点傻,但我的想法是,一旦项目被列出,就将其重新排列,我需要确保我首先能够正确地阅读和书写。代码如下: import csv,StringIO datalist = open('tmp/lista.txt', 'r') leyendo = datalist.read() separando = csv.reader(StringIO.

我已经用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()打开输出文件之前),我尝试了刷新以及关闭文件。。。似乎什么都不管用。独立脚本似乎没有什么作用,但是如果它在解释器上工作,代码就不会太错误,对吗

提前谢谢


注:我是Python新手,对编程也相当陌生,如果这是因为对一个基本问题的理解肤浅,我深表歉意。

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

使用:

而不是:

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

我认为错误可能与此有关,输入文件在哪里,输出文件保存在哪里。对于这种脚本,我认为最好使用绝对路径

使用:

而不是:

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

我认为错误可能与此有关,它可能与您从何处开始解释器有关


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

这可能与你从哪里开始翻译有关


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

无需执行
newdoc.close()
-一旦您用
语句结束
,它将自动关闭。另外,您不需要使用
StringIO
-
csv.reader(datalist,delimiter='\t')
就足够了。我已经取出了close()语句,但它仍然无法工作……不需要执行
newdoc.close()
-一旦您用
语句从
末尾掉下来,它就会自动关闭。另外,您不需要使用
StringIO
-
csv.reader(datalist,delimiter='\t')
就足够了。我已经取出了close()语句,它仍然无法工作……谢谢!这可能是一个路径问题,是的。但我看不出这两个例子之间有什么区别……谢谢你的建议,我以后会尽量记住的。现在问题已经解决了(这确实是路径问题),请参见另一个答案!美好的记住,将解决问题的问题标记为已接受,谢谢!这可能是一个路径问题,是的。但我看不出这两个例子之间有什么区别……谢谢你的建议,我以后会尽量记住的。现在问题已经解决了(这确实是路径问题),请参见另一个答案!美好的记住,将解决问题的问题标记为已接受,谢谢!好了,问题解决了,这确实是一个路径问题,而且是一个非常愚蠢的问题。解释器的路径很好,但脚本所在的文件夹(与输入文件相同)的路径不好,因此无法找到该文件夹。我为浪费你的时间向你道歉。非常感谢大家@乔治·冈萨雷斯不担心。所以就是问问题,不需要道歉。非常感谢!我不久前就发现了这一点,但直到现在才开始阅读。很棒的社区。再次感谢,谢谢!好了,问题解决了,这确实是一个路径问题,而且是一个非常愚蠢的问题。解释器的路径很好,但脚本所在的文件夹(与输入文件相同)的路径不好,因此无法找到该文件夹。我为浪费你的时间向你道歉。非常感谢大家@乔治·冈萨雷斯不担心。所以就是问问题,不需要道歉。非常感谢!我不久前就发现了这一点,但直到现在才开始阅读。很棒的社区。再次感谢。