【发布时间】:2017-05-02 20:39:28
【问题描述】:
我一直在寻求通过使用 Windows 任务管理器 + Python 来自动生成报告,并且最近编写了一个可以用来运行 .py 文件的脚本。但是,在实践中,它不起作用。我花了两天时间寻找答案并尝试不同的事情,但我一生都无法弄清楚这一点。
场景:我正在尝试编写一个独立的可执行 python 代码,该代码连接到服务器,使用 SQL 提取数据,然后创建一个保存在文件夹中的数据框/数据透视表。这个过程是我想要自动化的。
我当前的代码示例如下
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,我有一个批处理文件供任务调度程序运行,如下所示(我们将批处理文件称为“batch.bat”):
start C:\Python27\python.exe file.py
我在 Jupyter Notebook 中编写过代码,现在才开始尝试将它们转换为可执行的独立模块。有没有我可能遗漏的最佳实践?我曾尝试查看环境变量,但它们似乎设置得非常好。该代码在 jupyter notebook IDE 中似乎可以正常工作,但是一旦我将其放入 python 文件中就无法正常工作。
【问题讨论】:
-
如果您想从命令行运行 Python 脚本,只需导航到您的脚本所在的文件夹,然后运行脚本:
C:\MyFolder>python myscript.py。这有帮助吗? -
这我已经成功地做到了没有问题。但是,当我尝试在 Windows 任务计划程序中安排这个时,我似乎无法让它工作。
-
这个
start C:\Python27\python.exe C:\YourLocation\file.py怎么样? -
@Elmex80s,所以这是我目前的设置,但是当我尝试运行它时,命令提示符会立即关闭,并且我需要运行的查询不会运行。当我从 Jupyter Notebook 运行完全相同的代码时,它运行得非常好。
标签: python windows batch-file automation scheduled-tasks