我的文本文件从我的python代码中没有增加任何内容

2024-05-22 16:11:22 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我有一个文件夹:

E:\Adhiraj Chattopadhyay\NLG Dataset\FYP DB I have several sub-folders in it, each of which contains a text file. So I have entered this directory in my python intrpreter;

import os
path = "E:\\Adhiraj Chattopadhyay\\NLG Dataset\\FYP DB"
os.chdir(path)

我现在创建了一个具有读写权限的文件

file1 = open('file1.txt', 'r+' ) 
data = file1.read()

现在,我已经编写了一个python代码,它应该遍历fypdb中的所有文件夹来搜索其中的文本文件。 如果找到文本文件,代码将搜索文本以提取其中包含单词表的所有行

    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)

然后,代码应该将这些行写入文件1

This is where I am facing my problem!

当我打印文件1(数据)的内容时,没有输出。 当我从目录中直接打开file1时,会打开一个空白文件。你知道吗

有人能帮我吗?


Tags: 文件代码in文件夹foroslinefilename
3条回答

通常,文件在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)
  1. 可能是FYP和DB之间的“”(空格)导致了问题。你能试着用下划线来代替它吗?比如,看看会发生什么?你知道吗
  2. data = file.read()似乎放在最开始的地方,在文件中写入任何内容之前,所以此时文件是空的。打印print(data)不会显示任何内容。

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

  4. 确保“for”循环缩进正确。您的帖子显示for循环没有正确缩进-在您的代码中是这样吗?你知道吗

我第二天就解决了。对不起,发得太晚了,我有点忙。你知道吗

所以没有打印的原因是因为列表是空的; 我的代码到达了文本文件,但没有读取它们:

我通过删除if条件(

if ' Table ' in line)

是的。 这样做会在列表中填入所有文本文件的名称。

这是有效的代码; (但是格式仍然很糟糕,我一直在努力) (我用过)

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

相关问题 更多 >

    热门问题