没有任何内容从我的python代码附加到(写入)我的txt文件中

时间:2019-02-21 18:27:50

标签: python python-3.x nlp

我编写了一个代码,试图从文本文件中挑选出一些行并将其附加到另一个文本文件中;

我有一个文件夹:

  

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时,将打开一个空白文件。

有人可以帮我吗?

3 个答案:

答案 0 :(得分:1)

  1. 可能是导致问题的FYP和DB之间的'(空格)。例如,您可以尝试用下划线替换它,看看会发生什么吗?
  2. data = file.read()似乎放在文件的任何内容的开头,因此该文件为空。打印print(data)不会显示任何内容。

  3. 有两种处理文件的方式:打开/关闭或使用... as ... 。如果您是第一个,请确保在完成写入后关闭文件,否则可能会导致问题(因为无法读取文件)。 “ with”语句为您打开和关闭文件,这是处理文件的首选方式。

  4. 确保正确缩进了“ for”循环。您的帖子显示for循环未正确缩进-代码中是否存在这种情况?

答案 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

获得了解决方案所必需的信息