为了账号安全,请及时绑定邮箱和手机立即绑定

处理目录中的每个文件,输出不同的扩展名

处理目录中的每个文件,输出不同的扩展名

拉风的咖菲猫 2022-10-06 15:54:28
我编写了一个 Python 程序,它读取一个测试输入文件并输出一个输出文件inputFile = open ('test.dat', 'r')outputFile = open('test.log', 'w')outputFile.write(inputFile.read())inputFile.close()outputFile.close()我想读取文件夹中的所有 .dat 文件并输出相应的 .log 文件,同时保持文件名前缀相同。有人可以帮我吗?我发现我可以使用以下代码列出所有 dat 文件。但不知道从那时起该怎么办。import osfor file in os.listdir("."):    if file.endswith(".htm"):        print(os.path.join("xxx", file))另外:有没有办法知道目录中 .dat 文件的数量?这样,在处理每个文件时,我可以显示进度状态,例如:“正在处理 999 个数据文件的文件 1”等。
查看完整描述

3 回答

?
SMILET

TA贡献1796条经验 获得超4个赞

您可以使用glob仅列出您想要的文件shutil.copyfile并将它们复制到新文件名。使用从 glob 获得的列表大小来打印整个过程中的进度。


from glob import glob

import shutil


dat_files = list(glob("*.dat"))

dat_file_len = len(dat_files)

for i, dat_file in enumerate(dat_files, 1):

    print(f"copying {i} of {dat_file_len}")

    shutil.copyfile(dat_file, datfile[:-4] + ".log")


查看完整回答
反对 回复 2022-10-06
?
交互式爱情

TA贡献1712条经验 获得超3个赞

您可以使用以下程序:


import glob


files_list = glob.glob('*.dat')


count_dat_file=len(files_list)


print("Count of .dat file is : {}\n".format(count_dat_file))


count_var = 1


for item in files_list:

    print("Pocessing file {} of {}".format(count_var, count_dat_file))

    print("Old File Name is  : {}".format(item))

    file_name_list = item.split('.')

    file_name_list[-1] = 'log'

    new_file_name = '.'.join(file_name_list)

    print("New file Name is  : {}".format(new_file_name))

    with open(item,'r') as input_file:

        with open(new_file_name,'w') as output_file:

            output_file.write(input_file.read())

    print("Data written to new file : {}".format(new_file_name))

    count_var+=1

    print("\n")


查看完整回答
反对 回复 2022-10-06
?
墨色风雨

TA贡献1853条经验 获得超6个赞

首先,您必须获取目录中.dat包含的所有文件的列表,代码如下所示:


import glob

import os


dat_files = glob.glob('*.dat')

for i, dat_file in enumerate(dat_files):

    print("Writing %d file..." %(i+1))

    inputFile = open (dat_file, 'r')

    outputFile = open(dat_file[:-3]+"log", 'w') # removing "dat" from end, and inserting new extension "log"

    outputFile.write(inputFile.read())

    inputFile.close()

    outputFile.close()


查看完整回答
反对 回复 2022-10-06
  • 3 回答
  • 0 关注
  • 105 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信