簡體   English   中英

Python命令行參數文件名

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM