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