2016-12-05 36 views

回答

1

在函数中添加以下

fileList = csvfiles.split(",") 
for files in filesList: 
    data = read_csv(csvfile) 
    .... 
    .... 


production("rswm20160901C.csv,rswm20160901E.csv,rswm20160901D.csv") 

import sys 
def production(csvfile) 
...... 
...... 

fileList = sys.argv[1:] # pass the functions in command line 
for f in fileList: 
    production(f) 
+0

您已将csv文件作为字符串传递。有没有办法将它们作为单独的文件传递? – Dheeraj

+0

这既不是pythonic方式,也不是一个好的编程习惯。 –

+0

@Dheeraj你有两个选择作为生产(['rswm20160901C.csv','rswm20160901C.csv','rswm20160901C.csv'])或传递参数production(sys.argv) – praveenraj

1

我们并不需要的情况下过度复杂化。 这应该做到:

def production(csvfile) 
...... 
...... 

fileList = ['a.csv','b.csv','c.csv'] 
for f in fileList: 
    production(f) 
+0

FYI:我不认为有任何关于它的pythonic。恰当的功能使用。 –

+0

我是编程新手。这就是为什么这对我来说有点复杂。反正谢谢。 – Dheeraj

+0

没问题。只要接受这个问题,如果你认为它解决了你的问题。 –

0

使用Python *args拆包的说法可以接受的参数的任意数量。它将为任意数量的参数作品

def production(*csvfile): 
    for csv in csvfile: 
     # do something with csvfile 
     print(csv) 

production("file1.csv", "file2.csv", "file3.csv") 
# code above will printout 
# file1.csv 
# file2.csv 
# file3.csv 
production("file1.csv") 
# just print out 
# file1.csv 

如果你希望它是确切3个输入文件,你可以这样定义以下或1列表输入3个输入这对于任何列表的长度也

def production(csvfile1, csvfile2, csvfile3): 
    for csv in [csvfile1, csvfile2, csvfile3]: 
     # do something with csvfile 
     print(csv) 
将作品