[英]Python command line arguments file name
我有一個腳本,該腳本首先使用熊貓讀取表數據,然后進行一些計算:
import numpy as np
import sys
import pandas as pd
originaldata = pd.read_csv('../file.txt', sep='\t', skiprows = 31)
originaldata = originaldata.fillna(0)
.... (rest of the code)
我想在命令行中傳遞文件名,而不是每次有不同文件時都在代碼中鍵入文件名。 我的代碼對嗎?
import numpy as np
import sys
import pandas as pd
filename = sys.argv[-1]
originaldata = pd.read_csv('filename', sep='\t', skiprows = 31)
originaldata = originaldata.fillna(0)
.... (rest of the code)
所以在命令行上我會輸入:
$python program1.py file.txt
更新:
所以從評論中我了解到一個錯誤是
originaldata = pd.read_csv('filename', sep='\t', skiprows = 31)
應該
originaldata = pd.read_csv(filename, sep='\t', skiprows = 31)
而不是使用sys.argv [-1],argparse更有用。 所以在這里我將代碼更改為:
import argparse
parser = argparse.ArgumentParser(description='program1 ')
parser.add_argument('-i','--input', help='Input file name',required=True)
originaldata = pd.read_csv(args.input , sep='\t', skiprows = 31)
注意我正在使用Anaconda的Spyder IDLE,其中包含pandas模塊,對於我的程序,它在IDLE內運行良好,但命令行存在問題。 原來Anaconda使用pythonwin,所以在將路徑設置為pythonwin后,在我的命令行上輸入了:
$pythonwin program1.py file.txt
然后彈出“用於Win32的python”,並說“仍然無法使用win32ui”。 我現在很困惑。 使用64位計算機與我有什么關系嗎?
這行有問題:
originaldata = pd.read_csv('filename', sep='\t', skiprows = 31)
它應該是:
originaldata = pd.read_csv(filename, sep='\t', skiprows = 31)
這條線通常可以使用,但是....
filename = sys.argv[-1]
我不會這樣。 您只是得出最后的論點。 為什么不更精確? 我想要么使用argparse
,這可能是矯枉過正,在這種情況下,但我可能只是使用sys.argv[1]
並可能向用戶發出警告,如果他們使用的參數數目不正確通過測試len
的GTH sys.argv
要解決該錯誤,請嘗試添加:
import pandas as pd
您可能需要使用運行腳本的python版本pip install pandas
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.