Python: Попытка проверить, существует ли файл, а если нет, создать новые файлы и окончательный список вывода - PullRequest
1 голос
/ 28 апреля 2020

У меня есть 2 входных файла, которые я хочу изменить и создать новые файлы , если файл журнала не существует .

All_files_with_path = ['/path/to/some/file/Test/Directory1/Name_xxx.yyy.ddd_Foo.input1', '/path/to/some/file/Test/Directory1/Randomletters.Name_xxx. yyy.ddd_Foo.input2.ext ',' /path/to/some/file/Test/Directory1/Name.zzz.aaa.ggg_Foo.input1 ',' / path / to / some / file / Test / Directory1 / Name. zzz.aaa.ggg_Foo.log ',' /path/to/some/file/Test/Directory1/Randomletters.zzz.aaa.ggg_Foo.input2.ext ',' / path / to / some / file / Test / Directory2 / Name2_xxx.yyy.ddd_Foo.input1 ',' path / to / some / file / Test / Directory2 / Randomletters.Name2_xxx.yyy.ddd_Foo.input2.ext ']

[All_file_with_path] содержит все файлы в root здесь: / path / to / some / file / Test /. Если файл журнала существует для некоторых, но не для всех файлов input1, я хочу выполнить создание новых файлов только для тех, у которых нет соответствующего файла журнала.

Формат файла 1: Name_xxx.yyy.ddd_Foo.input1 Формат файла 2: Randomletters.Name_xxx.yyy.ddd_Foo.input2.ext

Формат файла журнала: Name_xxx.yyy.ddd_Foo. log

Ошибка: я не получаю никаких ошибок компиляции, но мой список команд [] пуст. После недолгих поисков я обнаружил, что он не генерирует новые файлы input2.ext ... Я знаю, что проверка условий "существует" неверна, но не знаю, где и как это изменить.

Моя вторая половина в значительной степени похожа на эту логику c: Безопасно создайте файл, если и только если он не существует с python

def modify_files(All_files_with_path):
commands = []
logfile = ''
#print(All_files_with_path)
for file in All_files_with_path:
   commandsfilepath = file.rsplit('/Test',1)[0] 
   if not 'NEW' in file:        #I am checking for this because I dont want to create _NEW_NEW and so on
        #print(file)

        if file.endswith('.input1'):
            prefix = file.rsplit('.', 1)[0]
            suffix = file.rsplit('.', 1)[1]
            newfilewithpath = prefix + '_NEW.' + suffix
            logfile = prefix+ '.log'
            exists = os.path.isfile(logfile)

        elif file.endswith('.input2.ext'):
            print(file)
            prefix = file.rsplit('.input2', 1)[0]
            newfilewithpath = prefix + '_NEW.' + 'input2.ext'
        #print(newfilewithpath)

        if exists: 
                print('log file exists. exiting the loop...... ')

                continue

        else:
            print('log file did not exist in the current directory. create NEW files and execute the rest')  
            flags = os.O_CREAT | os.O_EXCL | os.O_WRONLY

            try:
                print('trying to create modifed input1 and input2 files')
                file_handle = os.open(newfilewithpath, flags)
                print('done ')
            except OSError as e:
                if e.errno == errno.EEXIST:  # Failed as the file already exists.
                    pass
                else:  # Something unexpected went wrong so reraise the exception.
                    raise
            else: # No exception, so the file must have been created successfully.
                if file.endswith(".input1"):
                   """ do something"""" 

                elif file.endswith(".input2.txt"):
                    commands.append(newfilewithpath)
                    """do something with input2.txt"""

    return commands

выводом Я хочу:

commands = ['/path/to/some/file/Test/Directory1/Randomletters.Name_xxx.yyy.ddd_Foo_NEW.input2.ext','path/to/some/file/Test/Directory2/Randomletters.Name_xxx.yyy.ddd_Foo_NEW.input2.ext']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...