This is a stupid question, and I know it is, but for some reason I can't find any useful tutorials for running python from windows command prompt so I'll have to ask you guys. I have a script I need to run on all files starting FY*.txt or WS*.txt in one directory. I've tried going to the directory through command prompt and doing
for file in FY*.txt; do python my_script.py
which just informs me that 'file' is unexpected at this time. I've also tried
python my_script.py FY1.txt FY2.txt FY3.txt
with
import sys
inputfilenames=sys.argv[1:27]
for name in inputfilenames:
datafile=open(name,'r')
as the way I open my files in the python script itself. This seems to only run the script on one file, rather than all of them.
I apologise for my ignorance, I really have no clue how to use command prompt to run python things. As well as answers, if anyone has any tutorial recommendations I would be very, very grateful.
I'm not quite certain what that initial example is supposed to be, but to do that from the standard Windows command prompt, you could use something like this:
for %G in (FY*.txt); do python my_script.py %G
If you do something like this, you'll need something like the following in your code:
with open(sys.argv[1], 'r') as f:
do_something_with(f)
Alternatively, you could look into using the fileinput module to take a list of files as in your second example and process them. That is, inside your script you'd have something like:
for line in fileinput.input():
do_something_with(line)
Or you could make the wildcard expression an argument and use the glob module, so you could run:
python my_script.py FY*.txt
And then in your script do something like:
for file in glob.glob(sys.argv[1]):
with open(file, 'r') as f:
do_something_to(f)
The glob could be run over multiple arguments:
for files in([glob.glob(arg) for arg in sys.argv[1:]]):
for file in files:
with open(file, 'r') as f:
do_something_to(f)
which would allow you to execute:
python my_script FY*.txt WS*.txt
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With