[英]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.