我已经通过如下所示的线程读取:Python:如何保留和/或修改部分文件名?
但他们不正是我所期待的。
我在这里想要完成的是重命名文件,同时将它们从Excel转换为csv。我的转换代码工作,但我也想摆脱我的输出文件名称中不必要的单词。
比方说,我的文件名是:
“Sample_file_2016-4-30.xlsx”, “Hello_world_2014-5-30.xlsx”, “Great_day_2015-1-14.xlsx”
我希望我的输出是(数字前的所有字符将被删除):
“2016-4-30.csv”, “2014-5-30.csv”,“2015-1 -14.csv“
这就是我已经做(和代码工作):
def xslx_to_csv():
files = os.listdir(r"~\files to be converted")
current_path = os.getcwd()
os.chdir(r"~\files to be converted")
for file in files:
print file
filename = os.path.splitext(file)[0]
wb = xlrd.open_workbook(file)
sh = wb.sheet_by_index(0)
new_ext = 'csv'
new_name = (filename, new_ext)
csvfile = open(".".join(new_name), 'wb')
wr = csv.writer(csvfile, quoting=csv.QUOTE_ALL)
for rownum in xrange(sh.nrows):
wr.writerow(sh.row_values(rownum))
csvfile.close()
然而,这个代码只给我的输出如下:
“Sample_file_2016-4-30。 CSV”, “Hello_world_2014-5-30.csv”, “Great_day_2015-1-14.csv”
我试过到目前为止: 我试过使用os.rename()
和str.replace()
(正如Djizeus所建议的),我也尝试使用静态字符串位置,例如:new_name[14:35]
来获取部分名称。
但我需要一个更动态的方法。如何识别和删除yyyy-mm-dd格式的数字之前的所有字符?
奖金的问题: 我想借此远一点,而不是只去除文件名中多余的部分,我不知道如何可以改变文件名。例如,在这种情况下,所期望的输出可以是:
“Bonus_file_2016-4-30.csv”, “Bonus_file_2014-5-30.csv”, “Bonus_file_2015-1-14.csv”
所以基本上,我想用“Bonus”这个特定的词来代替开头的单词。
'new_name.replace( '样品', '奖金')' – Djizeus
请做一些研究,然后再发布... – Djizeus
喜@Djizeus你的答案可能适合这个例子,但我怎样才能使它更加动态?如果我的文件不以相同的字符串“Sample”开头会怎么样? – alwaysaskingquestions