Планировщик запускает скрипт на Python, но не создает CSV-файл - PullRequest
0 голосов
/ 02 декабря 2018

Я написал скрипт на python, чтобы очистить некоторые ссылки с веб-страницы и записать их в CSV-файл.Мой скрипт делает это правильно, когда запускает его из IDE.

Когда я запускаю то же самое, используя windows task scheduler, я вижу, что появляется command prompt, и скрипт запускается и печатает результат там какхорошо, но я не получаю файл CSV, когда задача выполнена.

Я что-то упустил?

Какие возможные изменения я должен внести, чтобы получить CSVфайл, когда скрипт запускается через .bat файл из windows task scheduler?

.bat содержит:

@echo off
"C:\Users\WCS\AppData\Local\Programs\Python\Python36-32\python.exe" "C:\Users\WCS\AppData\Local\Programs\Python\Python36-32\examplescript.py"

examplescript.py содержит:

import csv
import requests
from urllib.parse import urljoin
from bs4 import BeautifulSoup

url = "https://www.janglo.net/component/option,com_sobi2/"

def get_info(link):
    res = requests.get(url)
    soup = BeautifulSoup(res.text,"lxml")
    for items in soup.select("#sobi2CatListSymbols .sobi2SubcatsListItems a[title]"):
        if items.text=="Tutors":
            ilink = f"{urljoin(url,items.get('href'))}"
    return ilink

def get_links(tlink):
    linklist = []
    res = requests.get(tlink)
    soup = BeautifulSoup(res.text,"lxml")
    for item in soup.select(".sobi2ItemTitle a"):
        linklist.append(urljoin(url,item.get("href")))
    return linklist

if __name__ == '__main__':
    with open("task_scheduler.csv","a",newline="") as infile:
        writer = csv.writer(infile)
        item = get_info(url)
        for nlink in get_links(item):
            print(nlink)
            writer.writerow([nlink])

Я четко указал местоположение файла ".bat"ниже:

"C:\Users\WCS\AppData\Local\Programs\Python\Python36-32\test_schedule.bat"

enter image description here

1 Ответ

0 голосов
/ 02 декабря 2018

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

Вы не указали рабочий каталог;Я ожидаю, что это будет установлено с помощью поля Start in в планировщике, поэтому файл создается в расположении по умолчанию , %Windir%\System32\.

Либо установите каталог в поле Начать с для создаваемого CSV-файла, либо используйте сценарий пакетной обработки, используя cd, чтобы переместить текущий рабочий каталог в нужное место, или используйте абсолютный путь при открытии.файл.

Например, если ваш пакетный скрипт сначала запускается cd /d %~dp0, тогда рабочий каталог меняется на каталог пакетного сценария, и относительные пути в Python разрешаются в соответствии с этимместо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...