URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 10239
[ Назад ]

Исходное сообщение
"Python crontab open() путь по умолчанию"

Отправлено Alex , 12-Сен-18 13:16 
Есть код

my_file = open("some.txt", "w")
my_file.close()

При запуске он создает файл в текущей директории.

А если запустить этот файл из под крона. Файл будет создан в директории пользователя.

А как поменять окружение, а лучше код на питоне, что бы файл создавался всегда в той директории что скрипт.

Вариант /home/vova/py/my.py не подходит, так как программа становится жестко привязанная к пути.


Содержание

Сообщения в этом обсуждении
"Python crontab open() путь по умолчанию"
Отправлено ford1813 , 12-Сен-18 15:29 
> Есть код
> my_file = open("some.txt", "w")
> my_file.close()
> При запуске он создает файл в текущей директории.
> А если запустить этот файл из под крона. Файл будет создан в
> директории пользователя.
> А как поменять окружение, а лучше код на питоне, что бы файл
> создавался всегда в той директории что скрипт.
> Вариант /home/vova/py/my.py не подходит, так как программа становится жестко привязанная
> к пути.

В гугле первая ссылка?
https://www.google.ru/search?q=python+make+file+in+directory...
+ Ключевое слово при составлении поискового запроса argv[0] ?


"Python crontab open() путь по умолчанию"
Отправлено Alex , 12-Сен-18 16:03 
Нашел похожее решение:

os.chdir(os.path.abspath(os.path.dirname(__file__)))

Но по крону все равно скрипт отказывается работать.

Из крона запускаю так:
/home/user/py/test.py > /home/user/py/py.log

В коде есть:
....
ses = session.get(url)
print("111")
print(ses.text)
print("2222")

Затык на print(ses.text)

А с консоли все работает на ура.


"Python crontab open() путь по умолчанию"
Отправлено ford1813 , 12-Сен-18 16:29 
>[оверквотинг удален]
> Из крона запускаю так:
> /home/user/py/test.py > /home/user/py/py.log
> В коде есть:
> ....
> ses = session.get(url)
> print("111")
> print(ses.text)
> print("2222")
> Затык на print(ses.text)
> А с консоли все работает на ура.

#!/usr/bin/python2.7
import os
import sys
from sys import argv
dn = os.path.dirname(os.path.realpath(__file__))
fn = os.path.join(dn,"vcb.init")
fp = open(fn,"w")
fp.close()
Все работает!


"Python crontab open() путь по умолчанию"
Отправлено Alex , 13-Сен-18 08:47 
С файлами все заработало ! Спасибо!

А вот почему проблемы с print(ses.text) возникают ?

Далее по коду у меня идет:

handle = open("index.html", "w")
handle.write(ses.text)
handle.close()

Файл создается, но он пустой.

Похоже проблема кроется в ses.text

Питон у меня кстати:
#!/usr/bin/python3.5

Библиотеки:
import requests
import urllib.request

Какое еще надо прописать окружение ?