Python 3 - FileNotFoundError: [Errno 2] Нет такого файла или каталога - PullRequest
0 голосов
/ 21 июня 2019

Я пытаюсь изменить сценарий так, чтобы он принимал аргументы, чтобы я мог запустить сценарий, и он циклически перебирает ряд csv-файлов и выдает результаты.

Однако я рано падаю при попыткепросто запустите работающий код с аргументом вместо жестко запрограммированного, используя sys.argv вместо schema.csv

. Я запускаю скрипт из директории с кодом, где находится schema.csv, но яПолучение этой ошибки.

FileNotFoundError: [Errno 2] Нет такого файла или каталога: "['schema.csv']"

Я дважды проверил рабочий каталог с помощью os.getcwd ()я думаю, что результат, выделенный в ошибке, имеет слишком много кавычек или скобок, но я не уверен в том, что я могу проверить.

import sys


def get_schema(table):

    with open(str(sys.argv[1:])) as f:
        i = 0
        for line in f:
            column = line.split(',')
            datatype='STRING'
            if (column[0] == table):
                if 'char' in column[2]:
                    datatype = 'STRING'
                elif 'int' in column[2]:
                    datatype = 'INTEGER'
                elif 'boolean' in column[2]:
                    datatype = 'BOOLEAN'                
                elif 'timestamp' in column[2]:
                    datatype = 'TIMESTAMP'
                elif 'numeric' in column[2]:
                    datatype = 'NUMERIC'
                elif 'date' in column[2]:
                    datatype = 'DATE'              
                if (i == 0):
                    print('#%s' %(table))
                    print ('[')
                    i = i + 1
                if (i == 1):
                    print ('{"name":"%s", "mode": "NULLABLE", "type": "%s"}' %(column[1],datatype))
                if (i > 1):
                    print (',{"name":"%s", "mode": "NULLABLE", "type": "%s"}' %(column[1],datatype))
                i = i + 1
        print(',{"name":"ExtractAuditKey", "mode": "NULLABLE", "type": "INTEGER"}')
        print (']')


get_schema(table=(sys.argv[1:]))

FileNotFoundError: [Errno 2] No such file or directory: "['schema.csv']"

1 Ответ

2 голосов
/ 21 июня 2019

with open(str(sys.argv[1:])) as f: не будет работать, как вы надеетесь здесь. Вы используете sys.argv[1:], который дает вам список "нарезкой", а не строкой. Если вы вводите только одно значение, вы можете вместо этого сделать sys.argv[1], и оно должно работать - индексирование дает запись, срезы дают список.

...