我编写了一个代码,试图从文本文件中挑选出一些行并将其附加到另一个文本文件中;
我有一个文件夹:
E:\ Adhiraj Chattopadhyay \ NLG数据集\ FYP DB 我有几个子文件夹,每个子文件夹包含一个文本文件。 因此,我已经在python解释器中输入了此目录;
import os
path = "E:\\Adhiraj Chattopadhyay\\NLG Dataset\\FYP DB"
os.chdir(path)
我现在创建了一个具有读写权限的文件;
file1 = open('file1.txt', 'r+' )
data = file1.read()
现在,我已经编写了一个python代码,该代码可以遍历 FYP DB 中的所有文件夹以在其中搜索文本文件。< / em> 如果找到文本文件,则代码将搜索文本以提取其中带有单词Table的所有行;
for (dirname, dirs, files) in os.walk('.'):
for filename in files:
if filename.endswith('.txt'):
for line in filename:
if 'Table' in line:
# print (line.split(':'))
file1.write(line.split(':'))
print(data)
然后该代码应将这些行写入 file1
这是我面临的问题!
当我打印文件1(数据)的内容时,没有无输出。 当我,然后直接从目录打开file1时,将打开一个空白文件。
有人可以帮我吗?
答案 0 :(得分:1)
data = file.read()
似乎放在文件的任何内容的开头,因此该文件为空。打印print(data)
不会显示任何内容。
有两种处理文件的方式:打开/关闭或使用... as ... 。如果您是第一个,请确保在完成写入后关闭文件,否则可能会导致问题(因为无法读取文件)。 “ with”语句为您打开和关闭文件,这是处理文件的首选方式。
答案 1 :(得分:0)
通常使用以下约定在Python中打开文件:
with open('file1.txt','r+') as my_file_variable_name:
my_file_variable_name.readlines()
# or
my_file_variable_name.write("hello world")
所以这可能是问题所在。收集数据也可能是代码错误,但是如果您的# print (line.split(':'))
给了您预期的结果,那可能不是。我建议您打开所需的所有文件,并将数据存储为变量(理想情况下为列表,这样可以更好地打印到文件中)。然后,一旦收集完毕,只需调用:
with open('output.txt','w+') as my_file_variable_name:
my_file_variable_name.write(data)
答案 2 :(得分:0)
第二天我解决了这个问题。抱歉,我迟到了,否则我有点忙。
所以什么也没打印的原因是列表是空的。 我的代码正在访问文本文件,但没有读取:
我通过删除if条件(
如果“表格”在行中)
。 这样做会在列表中填入所有文本文件的名称。
这是起作用的代码; (但是格式仍然很糟糕,我一直在研究) (我用
os.path.join
)
lines = []
for (dirname, dirs, files) in os.walk('.'):
for filename in files:
if filename.endswith('.txt'):
thefile = os.path.join(dirname,filename)
text = open(thefile,'r' , encoding="utf-8" )
#lines = list()
for line in text:
if 'Table ' in line:
lines.append(line.split(':'))
print(lines)
这会打印出列表。
其他人提供了一些见解,对此我表示感谢。 我从https://www.pythonlearn.com/html-008/cfbook017.html
获得了解决方案所必需的信息