Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何循环浏览所有CSV文件,打开每个文件,并对每个文件执行一些操作?_Python_Python 3.x - Fatal编程技术网

Python 如何循环浏览所有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

我试图循环浏览文件夹中的所有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)) 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()