تمرير الوسائط مع أحرف البدل لسيناريو بيثون
-
03-07-2019 - |
سؤال
وأريد أن أفعل شيئا من هذا القبيل:
c:\data\> python myscript.py *.csv
ووتمرير كل من ملفات .csv في الدليل إلى بلدي النصي الثعبان (بحيث sys.argv
يحتوي ["file1.csv", "file2.csv"]
، الخ)
ولكن sys.argv
فقط يتلقى ["*.csv"]
مشيرا الى ان البدل لم يتم توسيع، لذلك هذا لا يعمل.
وأنا أشعر بأن هناك طريقة بسيطة للقيام بذلك، ولكن لا يمكن العثور عليه في Google. أي أفكار؟
المحلول
ويمكنك استخدام وحدة غلوب، وبهذه الطريقة سوف لا تعتمد على سلوك قذيفة معينة (حسنا، أنت لا تزال تعتمد على قذيفة لا تتوسع الحجج، ولكن على الأقل يمكنك الحصول على هذا أن يحدث في يونكس من قبل الهروب من البدل :-)).
from glob import glob
filelist = glob('*.csv') #You can pass the sys.argv argument
نصائح أخرى
في يونكس، وقذيفة توسع البدل، لذلك برامج الحصول على قائمة موسعة من أسماء الملفات. نوافذ لا تفعل هذا: قذيفة يمر البدل مباشرة إلى البرنامج، والتي لتوسيعها نفسها
وفينكو هو الصحيح: وحدة غلوب لا وظيفة:
import glob, sys
for arg in glob.glob(sys.argv[1]):
print "Arg:", arg