簡體   English   中英

Scheduler使python腳本運行但不生成csv文件

[英]Scheduler makes a python script run but doesn't produce a csv file

我在python中編寫了一個腳本來從網頁上抓取一些鏈接並將它們寫入csv文件。 從IDE運行時,我的腳本以正確的方式執行此操作。

當我使用windows task scheduler運行相同的操作時,我可以看到彈出一個command prompt ,腳本運行並在那里打印結果,但是在完成任務時我沒有得到任何csv文件。

我錯過了什么嗎?

當腳本通過windows task scheduler .bat文件運行時,我應該采取哪些可能的更改來獲取csv文件?

.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"

在此輸入圖像描述

您的代碼寫入當前工作目錄 ,因為它打開沒有路徑的文件名。 .bat文件的位置不確定正在運行的代碼的當前工作目錄

您沒有指定工作目錄; 我希望在調度程序中使用Start in字段進行設置,因此該文件是在默認位置 %Windir%\\System32\\

在“ 開始”字段中為要創建的CSV文件設置目錄,讓批處理腳本使用cd將當前工作目錄移動到正確的位置,或在打開文件時使用絕對路徑。

例如,如果批處理腳本首先運行cd /d %~dp0則工作目錄將更改為批處理腳本的目錄,並且Python中的相對路徑將針對該位置進行解析。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM