鱼C论坛

 找回密码
 立即注册
查看: 329|回复: 2

[已解决]问题求助呀,大佬们

[复制链接]
发表于 2023-9-28 12:12:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
import glob

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

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

    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[4:6] + " " + line[6:8] + " " + line[8:10] + " " + line[
                                                                                                       10:12] + " " + line[
                                                                                                                      12:14] + "   " + line[
                                                                                                                                       14:]
                    new_f.write(new_line)

我想让他写入原来的文件中,但是他给我另存为了后缀有_updated的另一个文件,怎么修改才能让他把加完空格的文档保存到原来的文档中,或者以相同的文件名保存到另一个文件夹中
最佳答案
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(".")[0] + "_updated." + file.split(".")[1]
    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[4:6] + " " + line[6:8] + " " + line[8:10] + " " + line[10:12] + " " + line[12:14] + "  " + line[14:]
                    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)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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(".")[0] + "_updated." + file.split(".")[1]
    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[4:6] + " " + line[6:8] + " " + line[8:10] + " " + line[10:12] + " " + line[12:14] + "  " + line[14:]
                    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)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-9-28 12:13:51 | 显示全部楼层
问题求助呀

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

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

1. 将处理后的文档保存到原始文件中:
import globtxt_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[4:6] + " " + line[6:8] + " " + line[8:10] + " " + line[10:12] + " " + line[12:]                f.write(new_line)
这段代码使用 r+ 模式打开原始文件,先将文件内容清空(truncate()),然后重新写入处理后的文档内容。

2. 将处理后的文档保存到另一个文件夹中:
import globimport ostxt_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[4:6] + " " + line[6:8] + " " + line[8:10] + " " + line[10:12] + " " + line[12:]                    new_f.write(new_line)
这段代码使用 os.path.join() 函数构造新文件的路径和文件名,并将处理后的文档保存到新文件夹 "processed_files" 中。

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

球一个最佳答案谢谢啦!这对我非常重要!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-22 14:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表