Python 如何循环浏览所有CSV文件,打开每个文件,并对每个文件执行一些操作?
我试图循环浏览文件夹中的所有CSV文件,打开每个文件,执行一些查找/替换操作,然后保存并关闭每个CSV。这是我的代码,我想应该很接近,但很明显有些东西关闭了,因为它不工作Python 如何循环浏览所有CSV文件,打开每个文件,并对每个文件执行一些操作?,python,python-3.x,Python,Python 3.x,我试图循环浏览文件夹中的所有CSV文件,打开每个文件,执行一些查找/替换操作,然后保存并关闭每个CSV。这是我的代码,我想应该很接近,但很明显有些东西关闭了,因为它不工作 import glob path = "C:\\Users\\ryans\\OneDrive\\Desktop\\downloads\\Products\\*.csv" for fname in glob.glob(path): print(str(fname)) with open(str(fname)) a
import glob
path = "C:\\Users\\ryans\\OneDrive\\Desktop\\downloads\\Products\\*.csv"
for fname in glob.glob(path):
print(str(fname))
with open(str(fname)) as f:
newText = f.read().replace('|', ',').replace(' ', '')
with open(str(fname), "w") as f:
f.write(newText)
这里有什么问题?使用Pandas Library读取csv文件,并用预期值替换该值
df['range'] = df['range'].str.replace(',','-')
范围是列名。
并通过以下方式保存它
df.to_csv(file_name, sep=',')
或者不用图书馆
with open(resource,'rb') as f, open("output.txt", "a+") as outputfile:
for line in f:
line = line.replace(' ', '-')
outputfile.write(line)
使用Pandas Library读取csv文件,并用预期值替换该值
df['range'] = df['range'].str.replace(',','-')
范围是列名。
并通过以下方式保存它
df.to_csv(file_name, sep=',')
或者不用图书馆
with open(resource,'rb') as f, open("output.txt", "a+") as outputfile:
for line in f:
line = line.replace(' ', '-')
outputfile.write(line)
您应该完成操作并关闭for循环中的文件 还请注意,将原始字符串用于路径比转义每个反斜杠更优雅
import glob
path = r"C:\Users\ryans\OneDrive\Desktop\downloads\Products\*.csv"
for fname in glob.glob(path):
print(str(fname))
with open(str(fname), "w") as f:
newText = f.read().replace('|', ',').replace(' ', '')
f.write(newText)
您应该完成操作并关闭for循环中的文件 还请注意,将原始字符串用于路径比转义每个反斜杠更优雅
import glob
path = r"C:\Users\ryans\OneDrive\Desktop\downloads\Products\*.csv"
for fname in glob.glob(path):
print(str(fname))
with open(str(fname), "w") as f:
newText = f.read().replace('|', ',').replace(' ', '')
f.write(newText)
write
语句不在for循环中,因此您将只写入最后一个.csv文件。您还将覆盖旧的csv文件,但这可能是您的计划。缩进错误。是的,我想进行我描述的更改,并用新的(转换的)文件覆盖旧文件。write
语句不在for循环中,因此您将只写入最后一个.csv文件。您还将覆盖旧的csv文件,但这可能是您的计划。缩进是错误的。是的,我希望进行我所描述的更改,并用新的(转换的)文件覆盖旧文件。我不希望逐列循环,我希望在一次传递中对每个文件进行所有更改。然后在有效的情况下,执行df.replace(','-')您的解决方案,引入对外部库的依赖性。这个问题很容易用标准函数解决。像这样以open(resource,'rb')作为f,open(“output.txt”,“w”)作为outputfile:
`对于f中的行:`line=line.replace('','-')
outputfile.write(line)
我不想逐列循环,我想在一次传递中对每个文件进行所有更改。然后执行df.replace(',','-'))您的解决方案,虽然有效,但引入了对外部库的依赖性。这个问题很容易用标准函数解决。像这样<代码>将open(resource,'rb')作为f,将open(“output.txt”,“w”)作为outputfile:`对于f中的行:`line=line.replace('',-')
outputfile.write(line)
。这看起来应该行得通,但我这里有点奇怪。当我运行这一行时:path='C:/Users/ryans/OneDrive/Desktop/downloads/Products/*.csv'我实际上得到了这个结果:C:/Users/ryans/OneDrive/Desktop/downloads/Products\ARMINDEX.csv为什么最后一个斜杠会被颠倒?谢谢。这看起来应该行得通,但我这里有点奇怪。当我运行这一行时:path='C:/Users/ryans/OneDrive/Desktop/downloads/Products/*.csv'我实际上得到了这个结果:C:/Users/ryans/OneDrive/Desktop/downloads/Products\ARMINDEX.csv为什么最后一个斜杠会被颠倒?这看起来绝对正确,但是当我运行代码时,我得到了这个结果:newText=f.read().replace('124;','.replace(“”,“”)实际上是删除第一个文件中的所有数据,并保存一个没有数据的空白文件。啊。不支持操作:不可读我认为问题在于无法在文件中查找/替换并使用相同的名称保存它。是这样吗?在f.write(newText)之后添加f.close(),这在我看来是绝对正确的,但是当我运行代码时,我得到了以下结果:newText=f.read().replace(“|”),“,”,”).replace(“,”)。它实际上是删除第一个文件中的所有数据,并保存一个没有数据的空白文件。啊。不支持操作:不可读我认为问题在于无法在文件中查找/替换并使用相同的名称保存它。是吗?在f.write(newText)之后添加f.close()