infile = open('abc.csv', "r")
infile1 = open('xyz.csv', "r")
infile2 = open('pqr.csv', "r")
我正在尝试将3个csv文件读入in,in1,in2。之后,我必须将它们传递给函数。问题是当我尝试直接将in1,in2作为参数传递时,显示
ValueError:int()以10为底的无效文字:
convert_to(infile, infile1, infile2)
def convert_to(..,..,..)
如何将in1,in2作为函数定义的参数传入并调用?这是正确的方式,然后为什么它会显示此错误。还有其他更好,更有效的方法吗?
答案 0 :(得分:1)
import csv
csv_files = ['abc.csv','xyz.csv','abcd.csv']
def convert_to(files):
for file in files:
with open(file,'r') as f:
# Do something
您可以将文件列表传递给函数,然后根据需要进行更改/隐藏它们。
答案 1 :(得分:1)
首先,您不能使用 in 作为变量名,因为它是python中的保留字:
import csv
file1 = open("abc.csv", "r")
file2 = open("xyz.csv", "r")
file3 = open("pqr.csv", "r")
def convert_to(a, b, c):
...
convert_to(file1, file2, file3)
此外,这不是我要这样做的方式,因为我想确保在使用文件后将其关闭。参见this。我将创建一个接受文件名作为参数的函数,然后处理该函数内部的文件:
import csv
filename1 = "abc.csv"
filename2 = "xyz.csv"
filename3 = "pqr.csv"
def convert_to(a, b, c):
with open(a, "r") as file1:
pass # do something with file abc.csv
with open(b, "r") as file1:
pass # do something with file xyz.csv
with open(c, "r") as file1:
pass # do something with file pqr.csv
convert_to(filename1, filename2, filename3)
答案 2 :(得分:0)
“ in”是关键字。您应该更改该变量名称。
不仅仅是变量名...您还需要更改参数。
我做到了,它对我来说很好。
import csv
in1 = open('abc.csv', "r")
in2 = open('xyz.csv', "r")
in3 = open('pqr.csv', "r")
def convert_to(in1, in2, in3):
return 'hi'
print(convert_to(in1,in2,in3))
答案 3 :(得分:0)
仅是一个建议,为什么不使用pandas
。
在pandas
的情况下,将它们作为对象传递给函数并执行您想做的事情非常容易。
import pandas as pd
in1 = pd.read_csv('path/to/file1.csv')
in2 = pd.read_csv('path/to/file2.csv')
in3 = pd.read_csv('path/to/file3.csv')
def convert_to(*args):
for df in args:
print "hi"
convert_to(in1,in2,in3)
让我知道熊猫是否对您有用。
convert_to
中的将任何值转换为integer
。这可能是您的问题。将string
转换为integer
会引发您在顶部提到的错误。
这是一个例子:
print int('56.0000')
print float('56.0000')
您可以观察
ValueError: invalid literal for int() with base 10: '56.0000000'
对于第一种情况和第二种情况,
56.0
我认为这就是您遇到的问题。