将文件 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("..")