2015-09-28 23 views
1

有了這個工作代碼讀取2個文件,重新打印:的Python:文件的未知#作爲功能ARG

import sys 
args = sys.argv[1:] 

def funcprint(arg1, arg1): 
    with open(arg1, "r") as inp: 
     for line in inp: 
      print(line) 
    with open(arg2, "r") as inp: 
     for line in inp: 
      print(line) 

funcprint("C:/file1.txt", "C:/file2.txt") 

但是,如何將一個文件傳遞的任意數量的功能?有*arg而不是1 & 2結果在TypeError: invalid file:,即使只有1個通過的文件。

作爲一個側面的問題,如果所有文件都在同一個文件夾中,是否有縮短函數調用的方法?類似於funcprint("C:/": "file1.txt", "file2.txt")

回答

1

如果你想通過文件名的任意號碼,你會怎麼做:

def funcprint(*args): 
    for f in args: 
     with open(f, 'r') as inp: 
      ... 

funcprint("C:/file1.txt", "C:/file2.txt") 

如果這些文件都在同一目錄下,你可以這樣做:

def funcprint(dir, *args): 
    for f in args: 
     with open('{}{}'.format(dir, f), 'r') as inp: 
      ... 

funcprint('C:/', 'file1.txt', 'file2.txt') 
+0

巧妙!這兩種解決方案都像魅力一樣 –