【问题标题】:Reading from several .csv files simultaneously [duplicate]同时读取多个 .csv 文件[重复]
【发布时间】:2019-01-07 12:50:27
【问题描述】:

我正在尝试通过循环从两个不同的 .csv 文件中读取值。打开一个 .csv 文件时,我能够完美地运行程序;但是,当我导入第二个 .csv 文件时,出现以下错误:


Traceback(最近一次调用最后一次): 文件“C:\Users\crteeic\Desktop\Project\Full Program (Testing).py”,第 210 行,在 使用 open('MagnaDC Set Points.csv', 'r') 和 ('Amatek Set Points.csv', 'r') 作为 csvfile:

属性错误:输入

该程序的目的是从两个 .csv 文件中读取值并将这些值发送到两个不同的电源。请在下面找到代码:

with open('MagnaDC Set Points.csv', 'r') and ('Amatek Set Points.csv', 'r') as csvfile:
    dataset = csv.reader(csvfile, delimiter=',')
    next(dataset)
    rows = list(dataset)
    inputSamplesm = np.empty([len(rows), 2], dtype=float)
    outputSamplesm = np.empty([1,3], dtype=float)
    inputSamplesa = np.empty([len(rows), 2], dtype=float)
    outputSamplesa = np.empty([1,3], dtype=float)
    testStartTime = time.time()
    for idx, data in enumerate(rows):
        inputSamplesm[idx] = [data[0], data[1]]
        inputSamplesa[idx] = [data[0], data[1]]
        s.sendall('VOLT {0}\n'.format(data[0]).encode('utf-8'))
        conn.write('VOLT {0}\n'.format(data[0]).encode('utf-8'))
        stopTime = testStartTime + int(data[1])

请指教。谢谢。

【问题讨论】:

    标签: python csv for-loop with-statement


    【解决方案1】:

    需要单独打开文件:

    with open('MagnaDC Set Points.csv', 'r') as csvfile1, open('Amatek Set Points.csv', 'r') as csvfile2: 
    

    更多信息: Read two textfile line by line simultaneously -python

    【讨论】:

    • 谢谢!效果很好。
    【解决方案2】:

    如果您只想串行读取两个文件并发送它们,请遍历文件名:

    filenames = [
      "MagnaDC Set Points.csv",
      "Amatek Set Points.csv",
    ]
    for filename in filenames:
        with open(filename, "r") as csvfile:
            dataset = csv.reader(csvfile, delimiter=",")
            next(dataset)
            rows = list(dataset)
            inputSamplesm = np.empty([len(rows), 2], dtype=float)
            outputSamplesm = np.empty([1, 3], dtype=float)
            inputSamplesa = np.empty([len(rows), 2], dtype=float)
            outputSamplesa = np.empty([1, 3], dtype=float)
            testStartTime = time.time()
            for idx, data in enumerate(rows):
                inputSamplesm[idx] = [data[0], data[1]]
                inputSamplesa[idx] = [data[0], data[1]]
                s.sendall("VOLT {0}\n".format(data[0]).encode("utf-8"))
                conn.write("VOLT {0}\n".format(data[0]).encode("utf-8"))
                stopTime = testStartTime + int(data[1])
    

    【讨论】:

    • 感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-03
    • 2016-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-01
    相关资源
    最近更新 更多