wjq0414 发表于 2023-9-28 12:12:41

问题求助呀,大佬们

import glob

# 获取当前文件夹下的所有txt文件
txt_files = glob.glob("*.TXT")

for file in txt_files:
    # 新文件的文件名,添加"_updated"后缀
    new_file = file.split(".") + "_updated." + file.split(".")

    with open(file, 'r') as f:
      with open(new_file, 'w') as new_f:
            # 逐行读取并处理文档内容
            for line in f:
                if len(line) < 14:
                  # 如果行长度小于14个字符,不进行处理
                  new_f.write(line)
                else:
                  # 在指定位置插入空格
                  new_line = line[:4] + " " + line + " " + line + " " + line + " " + line[
                                                                                                       10:12] + " " + line[
                                                                                                                      12:14] + "   " + line[
                                                                                                                                       14:]
                  new_f.write(new_line)

我想让他写入原来的文件中,但是他给我另存为了后缀有_updated的另一个文件,怎么修改才能让他把加完空格的文档保存到原来的文档中,或者以相同的文件名保存到另一个文件夹中

isdkz 发表于 2023-9-28 12:12:53

可以将新文件保存到另一个文件夹中,然后将新文件的内容复制到原文件中,最后删除新文件即可。修改后的代码如下:

import glob
import os

# 获取当前文件夹下的所有txt文件
txt_files = glob.glob("*.TXT")

for file in txt_files:
    # 新文件的文件名,添加"_updated"后缀
    new_file = file.split(".") + "_updated." + file.split(".")
    new_file_path = os.path.join("new_folder", new_file)# 新文件保存的路径

    with open(file, 'r') as f:
      with open(new_file_path, 'w') as new_f:
            # 逐行读取并处理文档内容
            for line in f:
                if len(line) < 14:
                  # 如果行长度小于14个字符,不进行处理
                  new_f.write(line)
                else:
                  # 在指定位置插入空格
                  new_line = line[:4] + " " + line + " " + line + " " + line + " " + line + " " + line + "" + line
                  new_f.write(new_line)

    # 将新文件的内容复制到原文件中
    with open(new_file_path, 'r') as new_f:
      with open(file, 'w') as f:
            for line in new_f:
                f.write(line)

    # 删除新文件
    os.remove(new_file_path)

Mike_python小 发表于 2023-9-28 12:13:51

问题求助呀

在你提供的代码中,使用了 glob 模块来获取当前文件夹下所有的 .TXT 后缀的文件,并进行处理后保存为新文件。你希望将处理后的文档保存到原始文件中或者以相同的文件名保存到另一个文件夹中。

根据你的需求,我将给出两种修改方案供参考:

1. 将处理后的文档保存到原始文件中:


import glob

txt_files = glob.glob("*.TXT")

for file in txt_files:
    with open(file, 'r+') as f:# 使用 'r+' 模式表示可读写模式打开文件
      lines = f.readlines()# 逐行读取原始文档内容

      f.seek(0)# 将文件指针返回到文件开头
      f.truncate()# 清空文件内容

      for line in lines:
            if len(line) < 14:
                # 如果行长度小于14个字符,不进行处理
                f.write(line)
            else:
                # 在指定位置插入空格
                new_line = line[:4] + " " + line + " " + line + " " + line + " " + line + " " + line
                f.write(new_line)


这段代码使用 r+ 模式打开原始文件,先将文件内容清空(truncate()),然后重新写入处理后的文档内容。

2. 将处理后的文档保存到另一个文件夹中:


import glob
import os

txt_files = glob.glob("*.TXT")

# 创建新文件夹用于保存处理后的文档
if not os.path.exists("processed_files"):
    os.makedirs("processed_files")

for file in txt_files:
    # 构造新文件的路径和文件名
    new_file = os.path.join("processed_files", file)
   
    with open(file, 'r') as f:
      with open(new_file, 'w') as new_f:
            for line in f:
                if len(line) < 14:
                  # 如果行长度小于14个字符,不进行处理
                  new_f.write(line)
                else:
                  # 在指定位置插入空格
                  new_line = line[:4] + " " + line + " " + line + " " + line + " " + line + " " + line
                  new_f.write(new_line)


这段代码使用 os.path.join() 函数构造新文件的路径和文件名,并将处理后的文档保存到新文件夹 "processed_files" 中。

希望这些修改方案能满足你的需求!如果还有其他问题,请随时提问。

球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}
页: [1]
查看完整版本: 问题求助呀,大佬们