Запись в файл Python работает в Windows, но не в Linux

1

У меня есть скрипт 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
  • 1
    Вы говорите bash добавить файл в каталог, который не существует.
  • 0
    Использование Python для вызова вашей оболочки для перенаправления ввода в файл очень мало. Просто используйте bash если вы хотите создавать сценарии оболочки. Команды оболочки не являются кроссплатформенными: Python есть. Было бы лучше открыть файл в Python и выполнить добавление без вызова subprocess .
Показать ещё 1 комментарий
Теги:

2 ответа

1

Убедитесь, что каталог, в котором вы пытаетесь записать этот файл, существует. Если это не так, 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)
  • 0
    Спасибо, это тот тип ответа, на который я надеялся. Я не очень хорошо разбираюсь в python, и я модифицирую скрипт, который кто-то другой создал для меня для использования в Windows. Я пытаюсь сделать его кроссплатформенным и одновременно изучать Python. Я попробую, похоже, это то, что мне нужно. еще раз спасибо
  • 0
    Нет проблем. Если вам помог ответ, вы можете поставить галочку и / или пометить его как «принятый». Добро пожаловать в StackOverflow и удачи в изучении Python!
0

Из этого сообщения об ошибке неясно, является ли проблема, что файл не существует в каталоге, или сама директория не существует.

Самый простой способ решить эту проблему - убедиться, что файл существует до выполнения этой команды.

  • 0
    Спасибо за совет

Ещё вопросы

Сообщество Overcoder
Наверх
Меню