【问题标题】:Nothing is being appended(written) to my txt file from my python code我的 python 代码中没有任何内容被附加(写入)到我的 txt 文件中
【发布时间】:2019-04-24 01:06:43
【问题描述】:

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

我有一个文件夹:

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 中的所有文件夹以搜索其中的文本文件。 如果找到文本文件,代码将搜索文本以提取其中包含单词 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

这就是我面临的问题!

当我打印 file1 ( data ) 的内容时,没有输出。 当 I ,然后直接从目录中打开 file1 时,会打开一个空白文件。

有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: python python-3.x nlp


    【解决方案1】:
    1. 可能是 FYP 和 DB 之间的“ ”(空格)导致了问题。例如,您可以尝试用下划线替换它,看看会发生什么?
    2. data = file.read() 似乎放在最开始,在文件中写入任何内容之前,因此此时文件为空。打印print(data) 将不会显示任何内容。

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

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

    【讨论】:

    • 我检查了您的 (1) - 事实并非如此。什么都没有打印的原因是列表是空的;我的代码正在访问文本文件,但没有阅读它们。我已经发布了一个答案,您可以查看。感谢您的回复!
    【解决方案2】:

    通常在 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)
    

    【讨论】:

    • 什么都没有打印的原因是因为列表是空的;我的代码正在访问文本文件,但没有阅读它们。我已经发布了一个答案,您可以查看。感谢您的回复!
    • 即使你不遵守约定; ``` with open(....): .... ``` 代码工作正常。它引发了文件保持打开状态的问题,但代码工作正常。
    【解决方案3】:

    我第二天解决了这个问题。抱歉发晚了,不然我有点忙。

    所以没有打印的原因是列表是空的; 我的代码正在访问文本文件但没有读取它们

    我通过删除 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 获得了解决方案的必要信息

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 2015-11-10
      • 2021-07-25
      • 2019-11-09
      • 2021-10-17
      • 2022-08-14
      相关资源
      最近更新 更多