Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.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_String_Python 2.7_Python 3.x_Machine Learning - Fatal编程技术网

如何使用python在文本文件中编写多行字符串的完整输出?

如何使用python在文本文件中编写多行字符串的完整输出?,python,string,python-2.7,python-3.x,machine-learning,Python,String,Python 2.7,Python 3.x,Machine Learning,我有以下文本文件,其中包含以下方式给出的字符串 trymf_001/trymrf_001_001 trymf_001/trymf_001_002 ... trymf_001/trymf_001_160 ... trymt_018/trymt_018_280 使用以下代码 #!/usr/bin/env python fo = open ("stt.text", "r") for line in fo.readlines(): a = line.find('/') str1 = l

我有以下文本文件,其中包含以下方式给出的字符串

trymf_001/trymrf_001_001
trymf_001/trymf_001_002
...
trymf_001/trymf_001_160
...
trymt_018/trymt_018_280
使用以下代码

#!/usr/bin/env python
fo = open ("stt.text", "r")
for line in fo.readlines():
    a = line.find('/')
    str1 = line[0:9]
    str2 = line[10:23]
    y = str2 + ' ' + str1
    print(y)
fo = open ("newstt.text", "w")
fo.write(y)
fo.close()  
打印时,终端屏幕上的输出为:

trymrf_001_001 trymf_001
trymrf_001_002 trymf_001
...
trymf_001_160 trymf_001
...
trymt_018_280 trymt_018
但是,我在新文本文件中只得到一行(最后一行),而
需要所有的行。

你应该边读边写。现在,你读了所有的书,只写了最后一本。它应该是这样的:

#!/usr/bin/env python
fi = open ("stt.text", "r")
fo = open ("newstt.text", "w")
for line in fi.readlines():
    a = line.find('/')
    str1 = line[0:9]
    str2 = line[10:23]
    y = str2 + ' ' + str1
    print(y)        
    fo.write(y)
fo.close  

只有最后一行被写入,因为您在
for
循环中定义
y
,这意味着每次迭代
y
都会被重新定义。你可以试试这个

 fo = open ("stt.text", "r")
 y_list = [] # make new list to store all the data
 for line in fo.readlines():
     a = line.find('/')
     str1 = line[0:9]
     str2 = line[10:23]
     y = str2 + ' ' + str1
     y_list.append(y) # store all the data to the newly created list
     print(y)
 fo.close()
 fo = open ("newstt.text", "w")
 for lines in y_list:
     fo.write(lines+"\n") # write all the data from the list
 fo.close()

您应该使用
with
打开文件:
将open('a','r')作为fi,open('b','w')作为fo:
在写入文件之前将所有内容收集到内存中会在输入文件足够大时失败。出于这个原因,另一个答案更可取。(当然,如果行长得惊人,最终还是会消耗大量内存;这有一个单独的解决方案,但在您真正遇到问题之前,我们不要去那里。)请在上面的代码中建议我这样做,因为我的文件足够大。您到底想要什么