如何使用 Pandas 为 excel 文档添加时间戳?
How do I timestamp an excel document using Pandas?
我有一个脚本,它使用 FFMPEG 和 CMD 根据 excel 文档逐行剪切视频文件。我希望 python 在完成一行后添加时间戳。你们能帮忙吗?
import subprocess as sp, pandas as pd
ffmpeg = 'C:/FFMPEG/bin/ffmpeg.exe' # on Windows
datafile = r'C:\Users\A_Do\Dropbox. Projects. Python\TM Creator\tm_creator_test1.xlsx'
xl = pd.ExcelFile(datafile,index = False)
df = xl.parse('Sheet1')
def create_tm():
row_iterator = df.iterrows()
# take first item from row_iterator
for i, row in row_iterator:
infile = row['filename']
outputfile = row['outputfilename']
timein = row['timein']
duration = row['duration']
decision = row['Create TM?']
if decision == "Y":
sp.call(ffmpeg + " -y -i " + infile + " -map 0:0 -map 0:1 -map 0:2 -acodec copy -ss " + str(timein) + " -codec copy -t " + str(duration) + " " + outputfile,shell=True) #this works
elif decision != decision: #this gets rid of the NaN
break
else:
print "You said you didn't want to make a TM for " + str(infile)
create_tm()
谢谢!
我的最终代码:
import subprocess as sp, pandas as pd
# (1) new import
from openpyxl import load_workbook
# (2) new import
from datetime import datetime
ffmpeg = 'D:/FFMPEG/bin/ffmpeg.exe' # on Windows
datafile = r'D:\Dropbox. Projects. Python\TM Creator\tm_creator_test1.xlsx'
# (3) open the file in openpyxl first:
book = load_workbook(datafile)
xl = pd.ExcelFile(datafile,index = False)
df = xl.parse('Sheet1')
def create_tm():
row_iterator = df.iterrows()
# take first item from row_iterator
for i, row in row_iterator:
infile = row['filename']
outputfile = row['outputfilename']
timein = row['timein']
duration = row['duration']
decision = row['Create TM?']
if decision == "Y":
sp.call(ffmpeg + " -y -i " + infile + " -map 0:0 -map 0:1 -acodec copy -ss " + str(timein) + " -codec copy -t " + str(duration) + " " + outputfile,shell=True) #this works
# (4) Wherever in the code you want to put the timestamp:
df.loc[i, 'Timestamp'] = str(datetime.now())
# (5) This saves the sheet back into the original file, without removing
# any of the old sheets.
writer = pd.ExcelWriter(datafile)
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
df.to_excel(writer, index=False)
writer.save()
elif decision != decision: #this gets rid of the NaN
break
else:
print "You said you didn't want to make a TM for " + str(infile)
应用 this SO 问题的答案,这是您的代码的更新版本,其中包含我所做更改的注释:
import subprocess as sp, pandas as pd
# (1) new import
from openpyxl import load_workbook
# (2) new import
from datetime import datetime
ffmpeg = 'C:/FFMPEG/bin/ffmpeg.exe' # on Windows
datafile = r'C:\Users\A_Do\Dropbox. Projects. Python\TM Creator\tm_creator_test1.xlsx'
# (3) open the file in openpyxl first:
book = load_workbook(datafile)
xl = pd.ExcelFile(datafile,index = False)
df = xl.parse('Sheet1')
def create_tm():
row_iterator = df.iterrows()
# take first item from row_iterator
for i, row in row_iterator:
infile = row['filename']
outputfile = row['outputfilename']
timein = row['timein']
duration = row['duration']
decision = row['Create TM?']
if decision == "Y":
sp.call(ffmpeg + " -y -i " + infile + " -map 0:0 -map 0:1 -map 0:2 -acodec copy -ss " + str(timein) + " -codec copy -t " + str(duration) + " " + outputfile,shell=True) #this works
elif decision != decision: #this gets rid of the NaN
break
else:
print "You said you didn't want to make a TM for " + str(infile)
# (4) Wherever in the code you want to put the timestamp:
df.loc[i, 'Timestamp'] = str(datetime.now())
# (5) This saves the sheet back into the original file, without removing
# any of the old sheets.
writer = pd.ExcelWriter(datafile)
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
df.to_excel(writer)
writer.save()
create_tm()
如果您想更好地控制时间戳的格式,请参阅 datetime.datetime.strftime()
的文档。此外,我写这篇文章时假设您的 Excel 文件中还有其他表格,如果您丢失了这些表格,您会很不高兴。如果不是这种情况,您几乎不必做那么多。您可以忽略编号为 1 和 3 的更改,并将 5 替换为 df.to_excel(datafile)
.
我有一个脚本,它使用 FFMPEG 和 CMD 根据 excel 文档逐行剪切视频文件。我希望 python 在完成一行后添加时间戳。你们能帮忙吗?
import subprocess as sp, pandas as pd
ffmpeg = 'C:/FFMPEG/bin/ffmpeg.exe' # on Windows
datafile = r'C:\Users\A_Do\Dropbox. Projects. Python\TM Creator\tm_creator_test1.xlsx'
xl = pd.ExcelFile(datafile,index = False)
df = xl.parse('Sheet1')
def create_tm():
row_iterator = df.iterrows()
# take first item from row_iterator
for i, row in row_iterator:
infile = row['filename']
outputfile = row['outputfilename']
timein = row['timein']
duration = row['duration']
decision = row['Create TM?']
if decision == "Y":
sp.call(ffmpeg + " -y -i " + infile + " -map 0:0 -map 0:1 -map 0:2 -acodec copy -ss " + str(timein) + " -codec copy -t " + str(duration) + " " + outputfile,shell=True) #this works
elif decision != decision: #this gets rid of the NaN
break
else:
print "You said you didn't want to make a TM for " + str(infile)
create_tm()
谢谢!
我的最终代码:
import subprocess as sp, pandas as pd
# (1) new import
from openpyxl import load_workbook
# (2) new import
from datetime import datetime
ffmpeg = 'D:/FFMPEG/bin/ffmpeg.exe' # on Windows
datafile = r'D:\Dropbox. Projects. Python\TM Creator\tm_creator_test1.xlsx'
# (3) open the file in openpyxl first:
book = load_workbook(datafile)
xl = pd.ExcelFile(datafile,index = False)
df = xl.parse('Sheet1')
def create_tm():
row_iterator = df.iterrows()
# take first item from row_iterator
for i, row in row_iterator:
infile = row['filename']
outputfile = row['outputfilename']
timein = row['timein']
duration = row['duration']
decision = row['Create TM?']
if decision == "Y":
sp.call(ffmpeg + " -y -i " + infile + " -map 0:0 -map 0:1 -acodec copy -ss " + str(timein) + " -codec copy -t " + str(duration) + " " + outputfile,shell=True) #this works
# (4) Wherever in the code you want to put the timestamp:
df.loc[i, 'Timestamp'] = str(datetime.now())
# (5) This saves the sheet back into the original file, without removing
# any of the old sheets.
writer = pd.ExcelWriter(datafile)
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
df.to_excel(writer, index=False)
writer.save()
elif decision != decision: #this gets rid of the NaN
break
else:
print "You said you didn't want to make a TM for " + str(infile)
应用 this SO 问题的答案,这是您的代码的更新版本,其中包含我所做更改的注释:
import subprocess as sp, pandas as pd
# (1) new import
from openpyxl import load_workbook
# (2) new import
from datetime import datetime
ffmpeg = 'C:/FFMPEG/bin/ffmpeg.exe' # on Windows
datafile = r'C:\Users\A_Do\Dropbox. Projects. Python\TM Creator\tm_creator_test1.xlsx'
# (3) open the file in openpyxl first:
book = load_workbook(datafile)
xl = pd.ExcelFile(datafile,index = False)
df = xl.parse('Sheet1')
def create_tm():
row_iterator = df.iterrows()
# take first item from row_iterator
for i, row in row_iterator:
infile = row['filename']
outputfile = row['outputfilename']
timein = row['timein']
duration = row['duration']
decision = row['Create TM?']
if decision == "Y":
sp.call(ffmpeg + " -y -i " + infile + " -map 0:0 -map 0:1 -map 0:2 -acodec copy -ss " + str(timein) + " -codec copy -t " + str(duration) + " " + outputfile,shell=True) #this works
elif decision != decision: #this gets rid of the NaN
break
else:
print "You said you didn't want to make a TM for " + str(infile)
# (4) Wherever in the code you want to put the timestamp:
df.loc[i, 'Timestamp'] = str(datetime.now())
# (5) This saves the sheet back into the original file, without removing
# any of the old sheets.
writer = pd.ExcelWriter(datafile)
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
df.to_excel(writer)
writer.save()
create_tm()
如果您想更好地控制时间戳的格式,请参阅 datetime.datetime.strftime()
的文档。此外,我写这篇文章时假设您的 Excel 文件中还有其他表格,如果您丢失了这些表格,您会很不高兴。如果不是这种情况,您几乎不必做那么多。您可以忽略编号为 1 和 3 的更改,并将 5 替换为 df.to_excel(datafile)
.