Вызов python скрипта из Linux вызывает TypeError: file () принимает не более 3 аргументов (4 задано) - PullRequest
0 голосов
/ 10 июля 2020

Этот сценарий уже давно работал (я использую его впервые), поэтому я считаю, что команда в Linux в чем-то неверна, хотя я проверял это много раз.

команда должна иметь следующую структуру:

python python_script_path.py -ccdb db_file.db -csvNameResolution input_csv_file.csv -csvManual another_input.csv -csvOut output_file.csv

Скрипт python

# imports

parser = argparse.ArgumentParser(description='usage:')
parser.add_argument('-ccdb','--ccdb', help='input: file to read from',required=True)
parser.add_argument('-csvNameResolution','--csvNameResolution',help='input: csv file - the output of the name resolution script', required=True)
parser.add_argument('-csvManual','--csvManual',help='input: csv file - manually prepared', required=True)
parser.add_argument('-csvOut','--csvOut',help='output: csv file which is the merge of the 2 inputs plus data queried', required=True)
args = parser.parse_args()

myEncoding = 'utf-8'

sys.stdout = open(sys.stdout.fileno(), mode='w', encoding=myEncoding, buffering=1) # That's wehre the error occurs.

Сообщение об ошибке:

Traceback (последний вызов последним): файл «python_script_path.py», строка 39, в sys.stdout = open (sys.stdout.fileno (), mode = 'w', encoding = myEncoding, buffering = 1) TypeError: file () принимает не более 3 аргументов (задано 4)

Я не понимаю, в чем проблема этого сообщения. Я рассмотрел проблемы с аналогичным сообщением об ошибке, но эта ошибка возникает в различных несоответствующих сценариях ios.

Спасибо!

1 Ответ

1 голос
/ 10 июля 2020

Похоже, что код написан для Python 3, но вы вызываете его с помощью Python 2. В Python 3 подпись для open () изменена, чтобы включить различные другие параметры, включая encoding, который использует этот скрипт. Попробуйте запустить:

python3 python_script_path.py -ccdb db_file.db -csvNameResolution input_csv_file.csv -csvManual another_input.csv -csvOut output_file.csv
...