[英]windows does not properly handle * (asterisk) argument when passed to python script
[英]python behaviour when passed an asterisk
我正在編寫一個小腳本,該腳本應該能夠處理多個文件。 因此,我添加了文件,可以用逗號分隔傳遞這些文件,然后執行arg.split(','),然后處理每個文件。
現在我想添加星號作為輸入可能性,例如
python myPythonScript.py -i folder/*
如果我第一次訪問它時,將參數-i的參數正確打印出來
folder/firstFileInFolder.txt
但是如果我用
python myPythonScript.py -i someFolder/someFile,folder/*
它工作正常。 有誰知道,為什么python可能會那樣?
嘗試運行此腳本
import sys
for arg in sys.argv:
print arg
python script.py *
您的外殼在python看到之前先展開星號。
如注釋中所述,您的shell擴展了非逗號分隔大小寫的星號。 如果您知道用戶可以像第二個示例一樣將星號指定為文件名的一部分,則可以讓Python使用glob模塊進行路徑擴展。
from glob import glob
glob('*')
允許shell或Python進行星號擴展的代碼可能如下所示:
import glob
file_list = []
for pattern in sys.argv[1:]:
file_list.extend(glob.glob(pattern))
在您的情況下,使用逗號作為分隔符將阻止您將逗號用作文件名的一部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.