如何打开,修改和保存多个.txt文件?

时间:2018-07-23 04:51:57

标签: python file pycharm

with open('90_out.csv', 'w') as f:
data = open('A:/pycharm/study0722/data/90.txt', 'r')
f.write('year, month, day, tmax, tavg, tmin, rainfall')
f.write('\n')
for line in data:
    tokens = line.split()
    year = int(tokens[0])
    month = int(tokens[1])
    day = int(tokens[2])
    tmax = float(tokens[3])
    tavg = float(tokens[4])
    tmin = float(tokens[5])
    rainfall = float(tokens[10])
    f.write("{:d}, {:d}, {:d}, {:.1f}, {:.1f}, {:.1f}, {:.1f}".format(year, month, day, tmax, tavg, tmin, rainfall))
    f.write('\n')

我用以上代码修改并保存了一个txt文件。应该以相同的方式处理大约50个文件。但我不知道如何打开多个文件并互相保存。

*我用过pycharm

2 个答案:

答案 0 :(得分:0)

您应列出所有文件,并说file_list并使用以下代码

for single_file in file_list:
    with open(single_file, 'w') as f:
        do_something()

您应该搜索google,该问题已被多次回答

答案 1 :(得分:0)

首先:如果要循环播放多个文件,则需要它们的列表。如果您不想手动创建它,则可以读取一个文件夹。您可能要处理某个文件夹中的所有* .txt文件:

import glob
source_folder = '/wherever/files/may/roam/'

src_list = glob.glob(source_folder + '*.txt')

第二:如果要在每次迭代中处理两个文件,则可以在一个with块中打开它们:

for src in src_list:
    a = src.rfind('\\')
    b = src.rfind('.')
    tgt = src[a+1: b] + '.csv'
    with open(src, 'r') as sf, open(tgt, 'w') as tf:
        _process_anything_here_

第三:如果只想用逗号分隔空间分隔文件的副本,则可以使用熊猫:

import pandas as pd

df = pd.read_table(sf, sep='\s+')
df.to_csv(tf)

如果问题是源文件没有标题,则可以在编写目标文件时将其添加:

df.to_csv(tf, header=['year, month, day, tmax, tavg, tmin, rainfall'])