2011-08-11 86 views
30

當您運行Python代碼時,如何從命令行獲取文件名?就像如果你的代碼打開一個文件並讀取線,但該文件變化的,只要你運行它,怎麼對你說:PYTHON從命令行獲取文件

python code.py input.txt 

這樣的代碼分析「input.txt中」?在實際的Python代碼中你需要做什麼?我知道,這是一個非常模糊的問題,但我不知道如何更好地解釋它。

回答

23
import sys 
filename = sys.argv[-1] 

這將得到命令行上的最後一個參數。如果沒有參數傳遞,它將是腳本名稱本身,因爲sys.argv[0]是正在運行的程序的名稱。

37

一個不錯的選擇是fileinput模塊,它將從命令行抓取任何或所有文件名,然後將內容作爲一個大文件提供給腳本。

import fileinput 
for line in fileinput.input(): 
    process(line) 

更多信息here

8

命令行參數可通過sys模塊的argv列表以列表形式提供。列表中的第一個元素是程序的名稱(sys.argv[0])。其餘元素是命令行參數。

另請參閱getopt,optparseargparse模塊,以進行更復雜的命令行解析。

-1

只需使用基本的命令raw_input

聲明輸入文件名字符串現在

inFile = "" 
inFile = raw_input("Enter the input File Name: ") 

您可以通過open(inFile,'w')

+0

完全錯過了問題的要點 – JPCF

11

使用argparse使用打開該文件是相當直觀:

import argparse 
parser = argparse.ArgumentParser()            

parser.add_argument("--file", "-f", type=str, required=True) 
args = parser.parse_args() 

現在名稱文件位於:

args.file 

你只需要有點不同運行程序:

python code.py -f input.txt