我試圖在用戶給定的某個時間在Python腳本中運行一個函數。爲此,我使用日期時間模塊。輸入時間並將其與用戶輸入進行比較
這也是迄今爲止的部分代碼:
import os
import subprocess
import shutil
import datetime
import time
def process():
path = os.getcwd()
outdir = os.getcwd() + '\Output'
if not os.path.exists(outdir):
os.mkdir(outdir, 0777)
for (root, dirs, files) in os.walk(path):
filesArr = []
dirname = os.path.basename(root)
parent_dir = os.path.basename(path)
if parent_dir == dirname:
outfile = os.path.join(outdir, ' ' + dirname + '.pdf')
else:
outfile = os.path.join(outdir, parent_dir + ' ' + dirname + '.pdf')
print " "
print 'Processing: ' + path
for filename in files:
if root == outdir:
continue
if filename.endswith('.pdf'):
full_name = os.path.join(root, filename)
if full_name != outfile:
filesArr.append('"' + full_name + '"')
if filesArr:
cmd = 'pdftk ' + ' '.join(filesArr) + ' cat output "' + outfile + '"'
print " "
print 'Merging: ' + str(filesArr)
print " "
sp = subprocess.Popen(cmd)
print "Finished merging documents successfully."
sp.wait()
return
now = datetime.datetime.now()
hour = str(now.hour)
minute = str(now.minute)
seconds = str(now.second)
time_1 = hour + ":" + minute + ":" + seconds
print "Current time is: " + time_1
while True:
time_input = raw_input("Please enter the time in HH:MM:SS format: ")
try:
selected_time = time.strptime(time_input, "%H:%M:%S")
print "Time selected: " + str(selected_time)
while True:
if (selected_time == time.localtime()):
print "Beginning merging process..."
process()
break
time.sleep(5)
break
except ValueError:
print "The time you entered is incorrect. Try again."
的問題是具有正試圖找到如何與當前時間比較用戶輸入的時間的方式(如,當前時間當腳本運行時)。另外,如何在給定的時間運行並處理一個函數?
我更新了代碼並按照你的說法做了,並且還使用了@alexandru Plugaru的代碼建議,但是它沒有正確輸出時間()沒有運行 – Brian
你在比較時忽略了比較變化,時間「和」selected_time「接近結束。你必須做的是與delta的比較:'如果selected_time> = current_time> = selected_time + delta',否則你可能會在你的預定時間周圍。第二個說法,「時間」是模塊,而不是當前時間,所以你的比較將無法工作! –
@Brian,我在這裏回答,因爲我無法回答你對亞歷山德魯的問題。你所遇到的問題是,你期望'selected_time'和當前時間相等。這種情況不太可能發生,因爲您的等待時間爲5秒。在你的比較中,你應該在'expected_time'周圍留出一些空白(見上面我的評論)。 –