我一直在寻求使用Windows任务管理器+ Python自动化报告,并且最近编写了一个可用于运行.py文件的脚本。但是,在实践中,它不起作用。我花了两天时间寻找答案并尝试不同的事情,但不能为我的生活弄清楚这一点。
场景:我正在尝试编写一个连接到服务器的独立可执行python代码,使用SQL提取数据,然后创建一个保存在文件夹中的dataframe / pivot表。这个过程就是我想要自动化的过程。
我目前的代码示例位于
之下def module():
sql = "SELECT * FROM TABLE"
conn = connect(host="url.com", port=xxxxxx)
cursor = conn.cursor()
cursor.execute(sql)
data = as_pandas(cursor)
todays_date = datetime.datetime.now().date().strftime("%Y%m%d")
df = data.loc[;,'date','stuff_and_thangs','column1','column2','column3']
earliest_date = df['date'].min()
latest_date = df['date'].max()
df['stuff_and_thangs'] = df['stuff_and_thangs'].astype(float)
df['stuff_and_thangs'] = df['stuff_and_thangs'].round(decimals = 2)
df.sort_values(by = 'date', ascending = 'True')
df.groupby(['date'], sort = True)['stuff_and_thangs','Column1','Column3']
table = pd.pivot_table(df,index=['Column', 'Column1', 'Column3'], columns =['Column'], values =['Column3'], fill_value = 0)
writer = pd.ExcelWriter('C:\User\blahblahblah/ %s to %s.xlsx' % (earliest_date, latest_date))
#Convert the dataframe pivot table to an XlsxWriter Excel object.
table.to_excel(writer, sheet_name='stuff_and_thangs')
# Close the Pandas Excel writer and output the Excel file.
writer.save()
if __name__ == "__main__":
import pandas as pd
import numpy as np
from impala.dbapi import connect
import datetime
from impala.util import as_pandas
module()
额外细节:
让我们说我的模块代码的文件名叫做file.py,我有一个批处理文件,让任务调度程序像这样运行设置(让我们调用批处理文件&# 34; batch.bat&#34):
start C:\Python27\python.exe file.py
我已经在Jupyter Notebook中编码,现在才开始尝试将这些转换为可执行的独立模块。我可能缺少哪些最佳实践?我试过调查环境变量但是,它们似乎设置得非常好。代码似乎在jupyter笔记本IDE中工作正常,但是一旦我将它变成python文件就无法工作。
答案 0 :(得分:0)
有些事情可能会妨碍您的项目。任务计划程序可能未在您认为的用户安全上下文中运行。这取决于您是否选择“运行是否登录用户”,是否选择“以最高权限运行”,用户是否实际登录,和/或用户是否具有允许用户使用的本地策略运行批处理文件。
如果选择“运行用户是否登录”或选择“以最高权限运行”,则运行它的用户上下文将无法访问网络资源。我只知道两种解决方法。不要选择其中任何一个选项,并在用户登录的计算机上运行任务,该计算机可以访问所需的网络资源,或者在将这些资源提供给网络的服务器上运行,并使用本地引用引用它们,例如C:对于Windows,而不是UNC,在云存储的情况下可能不是一个选项。
答案 1 :(得分:0)
我有同样的问题。我的程序通过Jupyter或Spyder启动,但在Windows任务计划程序上无法正常工作。
由于打印到stdout不起作用,我制作了Python创建文件,帮助我缩小了问题范围。试试这个,它帮助我弄清楚它是无法导入的大熊猫:
t = open("text11.txt", "wb")
t.close()
import re
t = open("text12.txt", "wb")
t.close()
import pandas as pd
t = open("text19.txt", "wb")
t.close()
...
希望有所帮助!