将文件 os.rename() 重命名为时间戳 returns 奇怪的字符串
Renaming files os.rename() to timestamps returns weird string
所以我尝试使用 os.stat("file").st_stat 将一些文件重命名为创建日期的时间。然后我弹出多余的信息,我只需要时间,因为它们已经在日期文件夹中按日期排序。代码有点像意大利面条,毕竟我还是个初学者。我使用了这么多 str() 因为有时我从 os.listdir() 得到 'None' 个对象,我在尝试格式化字符串中的整数时遇到了一些错误。所以问题是它不能正常工作。我摆脱了所有的错误,男孩他们很多,但它没有重命名为时间戳。我得到像“0R3IJL~J”这样的东西。它随着时间戳而变化。这让我认为它与时间有某种关系并且可以修复。
我尝试重命名的文件是 .h264,我正在 Raspbian,Raspberry Pi 零 W.
以下是我得到的名称的更多示例:06RR8I~Y、0OFKLJ~J、0O5KZV~I、0PJJ0D~V。
import os
import datetime
dates = []
for i in range(1,7):
if 1 <= i <= 6:
i = "0{}".format(str(i))
for j in range(1,31):
if 1 <= j <= 9:
j = "0{}".format(str(j))
dates.append("2019-{}-{}".format( i, j))
for dt in dates:
if os.path.exists(str(dt)):
os.chdir(str(dt))
for fil in os.listdir("."):
created = os.stat(str(fil)).st_ctime
da_cr = str(datetime.datetime.fromtimestamp(created))
print type(da_cr)
li_cr = list(da_cr)
if li_cr[-7] == ".":
for i in range(7):
li_cr.pop(-1)
for i in range(11):
li_cr.pop(0)
nn = "".join(l_c for l_c in li_cr)
print fil
os.rename(fil, str(nn))
os.chdir("../")
我想这会为您解决问题,但请记住,您需要实施大量检查以使其更安全。我只是重写并简化了您的代码,而没有进行安全检查。
import os
from datetime import datetime
dates = []
for i in range(1, 7):
for j in range(1, 31):
dates.append("2019-%0.2d-%0.2d" % (i, j))
for date in dates:
if os.path.exists(date):
os.chdir(date)
for filename in os.listdir("."):
timestamp = datetime.fromtimestamp(os.stat(filename).st_ctime)
os.rename(filename, timestamp.time())
os.chdir("..")
所以我尝试使用 os.stat("file").st_stat 将一些文件重命名为创建日期的时间。然后我弹出多余的信息,我只需要时间,因为它们已经在日期文件夹中按日期排序。代码有点像意大利面条,毕竟我还是个初学者。我使用了这么多 str() 因为有时我从 os.listdir() 得到 'None' 个对象,我在尝试格式化字符串中的整数时遇到了一些错误。所以问题是它不能正常工作。我摆脱了所有的错误,男孩他们很多,但它没有重命名为时间戳。我得到像“0R3IJL~J”这样的东西。它随着时间戳而变化。这让我认为它与时间有某种关系并且可以修复。
我尝试重命名的文件是 .h264,我正在 Raspbian,Raspberry Pi 零 W.
以下是我得到的名称的更多示例:06RR8I~Y、0OFKLJ~J、0O5KZV~I、0PJJ0D~V。
import os
import datetime
dates = []
for i in range(1,7):
if 1 <= i <= 6:
i = "0{}".format(str(i))
for j in range(1,31):
if 1 <= j <= 9:
j = "0{}".format(str(j))
dates.append("2019-{}-{}".format( i, j))
for dt in dates:
if os.path.exists(str(dt)):
os.chdir(str(dt))
for fil in os.listdir("."):
created = os.stat(str(fil)).st_ctime
da_cr = str(datetime.datetime.fromtimestamp(created))
print type(da_cr)
li_cr = list(da_cr)
if li_cr[-7] == ".":
for i in range(7):
li_cr.pop(-1)
for i in range(11):
li_cr.pop(0)
nn = "".join(l_c for l_c in li_cr)
print fil
os.rename(fil, str(nn))
os.chdir("../")
我想这会为您解决问题,但请记住,您需要实施大量检查以使其更安全。我只是重写并简化了您的代码,而没有进行安全检查。
import os
from datetime import datetime
dates = []
for i in range(1, 7):
for j in range(1, 31):
dates.append("2019-%0.2d-%0.2d" % (i, j))
for date in dates:
if os.path.exists(date):
os.chdir(date)
for filename in os.listdir("."):
timestamp = datetime.fromtimestamp(os.stat(filename).st_ctime)
os.rename(filename, timestamp.time())
os.chdir("..")