У меня есть входной файл, который выглядит как this (inFile.txt):Как реализовать STDOUT и записи файлов на основе входных параметров
a x
b y
c z
Я хочу реализовать программу, которая позволит пользователю писать STDOUT или файл в зависимости от команды:
python mycode.py infile.txt outfile.txt
Будете писать в файл.
И с этим
python mycode.py infile.txt #2nd case
будет писать STDOUT.
Я застрял с этим кодом:
import sys
import csv
nof_args = len(sys.argv)
infile = sys.argv[1]
print nof_args
outfile = ''
if nof_args == 3:
outfile = sys.argv[2]
# for some reason infile is so large
# so we can't save it to data structure (e.g. list) for further processing
with open(infile, 'rU') as tsvfile:
tabreader = csv.reader(tsvfile, delimiter=' ')
with open(outfile, 'w') as file:
for line in tabreader:
outline = "__".join(line)
# and more processing
if nof_args == 3:
file.write(outline + "\n")
else:
print outline
file.close()
При использовании второго случая он производит
Traceback (most recent call last):
File "test.py", line 18, in <module>
with open(outfile, 'w') as file:
IOError: [Errno 2] No such file or directory: ''
Что такое лучший способ это осуществить?
Вы определяете 'outfile' в' stdout', когда 'nof_args == 2'? В противном случае 'с открытым (outfile, 'w') как файл:' будет терпеть неудачу. –
Я вижу, что вы использовали мой 'len (sys.argv)' из вопроса, который вы удалили. У вас есть привычка удалять вопросы, как только вы получите ответ? –