Scheduler使python脚本运行,但不产生csv文件

时间:2018-12-02 13:53:02

标签: python python-3.x windows windowstaskschedule

我已经用python编写了一个脚本,以从网页中抓取一些链接并将其写入csv文件。从IDE运行脚本时,我的脚本会以正确的方式执行此操作。

当我使用windows task scheduler运行相同命令时,我看到弹出一个command prompt并且脚本也运行并在其中打印结果,但是当任务执行完毕时却没有任何csv文件完成。

我想念什么吗?

当通过.bat的{​​{1}}文件运行脚本时,要获取一个csv文件,我应该做些什么改变?

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

我已经在下面明确指定了“ .bat”文件的位置:

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])

enter image description here

1 个答案:

答案 0 :(得分:3)

您的代码将写入当前工作目录,因为它打开的文件名没有路径。 .bat文件的位置不能确定正在运行的代码的当前工作目录

您没有指定工作目录;我希望可以使用调度程序中的起始于字段进行设置,因此可以在default location%Windir%\System32\中创建文件。

开始于字段中设置要在其中创建CSV文件的目录,或者让批处理脚本使用cd将当前工作目录移动到正确的位置,或者打开文件时使用绝对路径。

例如,如果您的批处理脚本首先运行cd /d %~dp0,则工作目录将更改为批处理脚本的目录,并在该位置解析Python中的相对路径。