我在遍历下面的代码时遇到了一些麻烦。,本质上,我试图遍历文件的文件夹(“ filename_x.csv”)并删除字段中的所有逗号,那么我想输出与“ out”一起保存。如果我分别输入计数器,该代码的工作原理就像一个超级按钮,但不会移动到下一个计数。我知道这非常接近功能状态,但是“ with”语句可能允许其他文件关闭,因此它无法移至下一个计数或迭代(文件路径仅是示例)。请帮忙!
import pandas as pd
n = 1
x = str(n)
while n < 9:
import csv
with open("C:\\Desktop\\server_"+x+".csv",'r', newline='') as infile, open("C:\\Desktop\\server_"+x+"_out.csv",'w', newline='') as outfile:
reader = csv.reader(infile)
writer = csv.writer(outfile)
for row in reader:
writer.writerow(item.replace(",", "") for item in row)
n += 1
答案 0 :(得分:0)
该行:
x = str(n)
在错误的位置,需要放在顶部的循环中。
您只需将其设置为n
的初始值,然后它将保持这种状态。
您实际上甚至不需要它。只需将str(n)
直接放在字符串创建中,如下所示:
"C:\\Desktop\\server_" + str(n) + ".csv"
我还建议您使用其他循环结构。您使用的while
格式与您使用的格式没有任何意义。您应该使用for
循环,如下所示:
import pandas as pd
import csv
for n in range(1, 9):
with open("C:\\Desktop\\server_" + str(n) + ".csv",'r', newline='') as infile, open("C:\\Desktop\\server_" + str(n) + "_out.csv",'w', newline='') as outfile:
reader = csv.reader(infile)
writer = csv.writer(outfile)
for row in reader:
writer.writerow(item.replace(",", "") for item in row)
这可以解决一些问题。您简化了代码,但是还有其他一些问题。您将n
的增量放在了错误的纠正位置。另外,您正在循环中执行import cvs
,这可能不会破坏任何内容,但至少效率不高,因为它会尝试在每次通过外部循环时重新加载cvs
模块。
答案 1 :(得分:0)
假设您有文件server_1.csv
,server_2.csv
...
两件事:
您无需同时跟踪x
和n
您需要在正确的位置增加n
。您目前每行将其递增一次。
import pandas as pd
import csv # <<< no need to repeat the import statement though it's harmless
n = 1
while n < 9:
with open("C:\\Desktop\\server_" + str(n) + ".csv",'r', newline='') as infile, open("C:\\Desktop\\server_" + str(n) + "_out.csv",'w', newline='') as outfile:
reader = csv.reader(infile)
writer = csv.writer(outfile)
for row in reader:
writer.writerow(item.replace(",", "") for item in row)
# finished with this file, increment n
n += 1