gpt4 book ai didi

Python:遍历多个csv文件并制作多个新的csv文件

转载 作者:行者123 更新时间:2023-11-28 16:30:01 24 4
gpt4 key购买 nike

我刚开始使用 Python,我正在查看 csv 文件。

基本上我的情况是这样的:

我在 csv 中有坐标 X、Y、Z。

X Y Z
1 1 1
2 2 2
3 3 3

我想遍历并将用户定义的偏移值添加到所有 Z 值,并使用编辑后的 ​​z 值创建一个新文件。

这是我目前认为正确的代码:

# list of lists we store all data in
allCoords = []
# get offset from user
offset = int(input("Enter an offset value: "))
# read all values into memory
with open('in.csv', 'r') as inFile: # input csv file
reader = csv.reader(inFile, delimiter=',')
for row in reader:
# do not add the first row to the list
if row[0] != "X":
# create a new coord list
coord = []
# get a row and put it into new list
coord.append(int(row[0]))
coord.append(int(row[1]))
coord.append(int(row[2]) + offset)
# add list to list of lists
allCoords.append(coord)

# write all values into new csv file
with open(in".out.csv", "w", newline="") as f:
writer = csv.writer(f)
firstRow = ['X', 'Y', 'Z']
allCoords.insert(0, firstRow)
writer.writerows(allCoords)

但现在是困难的部分。我将如何处理一堆 csv 文件(在同一位置),并为每个 csv 生成一个新文件。

我希望有这样的东西:“filename.csv”变成“filename_offset.csv”,使用原始文件名作为新文件名的开头,在末尾附加“.offset”。

我想我需要使用“os”。功能,但我不确定如何,所以任何解释都将与代码一起受到赞赏! :)

抱歉,如果我没有说清楚,如果我需要更清楚地解释,请告诉我。 :)

非常感谢! :)

最佳答案

shutil.copy2(src, dst)¶
Similar to shutil.copy(), but metadata is copied as well

shutil

The glob module finds all the pathnames matching a specified pattern
according to the rules used by the Unix shell. No tilde expansion is
done, but *, ?, and character ranges expressed with [] will be correctly matched

glob

import glob
from shutil import copy2
import shutil
files = glob.glob('cvs_DIR/*csv')

for file in files:

try:
# need to have full path of cvs_DIR
oldName = os.path.join(cvs_DIR, file)
newName = os.path.join(cvs_DIR, file[:4] + '_offset.csv')
copy2(oldName,newName)

except shutil.Error as e:
print('Error: {}'.format(e))

关于Python:遍历多个csv文件并制作多个新的csv文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32944456/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com