У меня есть скрипт python, который я перехожу на Linux из Windows, но у меня проблема с небольшим фрагментом кода, который записывается в текстовый файл.
Он отлично работает на окнах, но это дает мне ошибку в Linux.
try:
subprocess.Popen('echo "'+ user_id+'|'+str(op.createdTime)+'" >> dataSeen/%s.txt' % group_id, shell=True, stdout=subprocess.PIPE, )
except Exception as e:
print e
на Linux он выдает эту ошибку:
/bin/sh: dataSeen/filename.txt: No such file or directory
Убедитесь, что каталог, в котором вы пытаетесь записать этот файл, существует. Если это не так, bash не будет автоматически создавать необходимые подкаталоги.
перед выполнением записи файла вы можете убедиться, что каталог существует с помощью os.mkdir
.
import os
if not os.path.exists('./dataSeen'):
os.mkdir('./dataSeen')
Python также имеет большие встроенные операции записи файлов; вам не нужно использовать subprocess
для записи файлов через командную строку. Встроенные функции более надежны, если вы используете приложение как для Windows, так и для Linux, поскольку они построены с учетом межплатформенной совместимости.
with open('dataSeen/filename.txt', 'w') as f:
f.write(my_data)
Из этого сообщения об ошибке неясно, является ли проблема, что файл не существует в каталоге, или сама директория не существует.
Самый простой способ решить эту проблему - убедиться, что файл существует до выполнения этой команды.
bash
если вы хотите создавать сценарии оболочки. Команды оболочки не являются кроссплатформенными: Python есть. Было бы лучше открыть файл в Python и выполнить добавление без вызоваsubprocess
.