使用python循环浏览csv文件时无法运行

时间:2020-05-21 13:52:07

标签: python-3.x

我在遍历下面的代码时遇到了一些麻烦。,本质上,我试图遍历文件的文件夹(“ 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

2 个答案:

答案 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.csvserver_2.csv ...

两件事:

  1. 您无需同时跟踪xn

  2. 您需要在正确的位置增加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