我是使用Python 3.6的新手,我有一个主要功能,我希望python每天运行,同时每次在不同的文件中写下给定的输出。 在这一刻,我的代码是:
#This is the child function I created
from ObtainsDistancesfromGoogleforRange import obtaindistance
def main():
dir = os.path.dirname(os.path.realpath(__file__))
passwords=['a', 'b']
ranges=[(1,2),(2,3)]
# Creates separate text files by passing the range for each file to the function obtaindistance, and then executing all instances of the function in parallel
proc=[]
for rangeind in range(0,len(passwords)):
password=passwords[rangeind]
rangestart=ranges[rangeind][0]
rangeend=ranges[rangeind][1]
p = Process(target=obtaindistance,args=(password,rangestart,rangeend))
proc.append(p)
print(proc)
# Runs all processes in parallel
for p in proc:
p.start()
for p in proc:
p.join()
# Appends the text files
output_f=open(os.path.join(dir,'Distances.csv'),'w',newline='')
output_writer=csv.writer(output_f)
output_header=['Destination','Origin','Date-time of query','Distance (meters)','Duration (seconds)','Duration in Traffic (seconds)', 'Query status']
output_writer.writerow(output_header)
for rangeind in range(0,len(passwords)):
rangestart=ranges[rangeind][0]
rangeend=ranges[rangeind][1]
dir = os.path.dirname(os.path.realpath(__file__))
input_f=open(os.path.join(dir,'DistancestoMarkets_'+str(rangestart)+'_'+str(rangeend)+'.csv'))
output_f.write(input_f.read())
#Close files
output_f.close()
input_f.close()
if __name__ == '__main__':
main()
我想让我的脚本每天都在不同的时间运行。我试过APScheduler,但我还没能使它成功。有任何想法吗? 另外我认为可能存在问题,因为我告诉脚本每次以相同的名称运行时都会创建一个新的csv文件,所以我想我必须修改它以便在每次运行时保存它下载的信息。一份不同的文件。 谢谢!
答案 0 :(得分:1)
要每天运行一个程序,最简单的方法是使用Windows的调度程序(任务调度程序),这样它就是运行脚本的操作系统。
为避免每天覆盖输出文件,您有两种方法:
output_f=open(os.path.join(dir,'Distances.csv'),'a',newline='')
答案 1 :(得分:0)
我建议您使用从系统时间派生的内容来扩充文件名。例如:
override func prepareForReuse() {
super.prepareForReuse()
for view in self.subviews{
view.removeFromSuperview()
}
}
如果您希望文件名更加人性化,请改用datetime包。
对于您的初始问题,我同意其他问题:使用您的操作系统的日程安排,每天在所需的时间运行。
答案 2 :(得分:0)
谢谢,我使用任务调度程序和recomendations来运行来自此博客的python脚本:https://blogs.esri.com/esri/arcgis/2013/07/30/scheduling-a-scrip/
每次运行脚本时都会创建一个新的directoy。
datetimeid= datetime.datetime.strftime(datetime.datetime.now(),'%Y%m%d-%H%M%S') #Define the datetime as a string in the format YearMonthDay - HourMinuteSecond
output_dir = os.path.join(dir,datetimeid) #Create a new folder with the date-time of execution
if not os.path.exists(output_dir):
os.makedirs(output_dir)