猿问

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

我编写了一个 Python 程序,它读取一个测试输入文件并输出一个输出文件


inputFile = open ('test.dat', 'r')

outputFile = open('test.log', 'w')

outputFile.write(inputFile.read())

inputFile.close()

outputFile.close()

我想读取文件夹中的所有 .dat 文件并输出相应的 .log 文件,同时保持文件名前缀相同。有人可以帮我吗?


我发现我可以使用以下代码列出所有 dat 文件。但不知道从那时起该怎么办。


import os

for file in os.listdir("."):

    if file.endswith(".htm"):

        print(os.path.join("xxx", file))

另外:有没有办法知道目录中 .dat 文件的数量?这样,在处理每个文件时,我可以显示进度状态,例如:“正在处理 999 个数据文件的文件 1”等。


拉风的咖菲猫
浏览 106回答 3
3回答

SMILET

您可以使用glob仅列出您想要的文件shutil.copyfile并将它们复制到新文件名。使用从 glob 获得的列表大小来打印整个过程中的进度。from glob import globimport shutildat_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")

交互式爱情

您可以使用以下程序:import globfiles_list = glob.glob('*.dat')count_dat_file=len(files_list)print("Count of .dat file is : {}\n".format(count_dat_file))count_var = 1for 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")

墨色风雨

首先,您必须获取目录中.dat包含的所有文件的列表,代码如下所示:import globimport osdat_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()
随时随地看视频慕课网APP

相关分类

Python
我要回答