0

我开始使用 Raspberry Pi 3B + 和 Canon 6D 创建新的 3D 扫描仪。由于 gphoto2 库,我有一部分 Python 代码可以恢复图像,但我无法更改恢复图像的名称,目前,我有两个文件:capt0000.cr2 和 capt0000.jpg 我必须将它们重命名为“时间" + .jpg 或 .cr2 但不可能,他们从不改名。

我尝试了几种方法,目前我使用的是 os.listdir 函数,该函数允许我对桌面上的所有文件进行排序。

程序开始:

from time import sleep
from datetime import datetime
from sh import gphoto2 as gp
import signal, os, subprocess

shot_date = datetime.now().strftime("%d-%m-%Y")
shot_time = datetime.now().strftime("%d-%m-%Y %H:%M:%S")
picID = "PiShots"
folder_name = shot_date + picID
save_location = "ScannerImages/" + folder_name

CaptureImageDownload = ["--capture-image-and-download"]
CaptureImage = ["--capture-image"]

功能:

def captureImageDownload():
    gp(CaptureImageDownload)

def captureImage():
    gp(CaptureImage)

def createFolder():
    try:
        os.makedirs(save_location)
    except:
        print("Failed to create folder")
    os.chdir(save_location)

def renameFiles(ID):
    for filename in os.listdir("."):
        if len(filename) < 13:
            if filename.endswith(".jpg"):
                os.rename(filename, (shot_time + ID + ".jpg"))
            print("Renamed the JPG")
        elif filename.endswith(".cr2"):
            os.rename(filename, (shot_time + ID + ".cr2"))
            print("Renamed the CR2")

主循环:

captureImageDownload()
createFolder()
renameFiles(ID)

现在我在桌面上创建了两个文件,请参见下图: https ://i.imgur.com/DDhYe1L

是因为文件权限知道我不是root用户吗?如果是因为那样,如何更改一般文件类型的权限,例如 .jpg,因为每次都是关于新图像,所以权限返回到下图: https ://imgur.com/VydSeAH

4

2 回答 2

0

问题解决了,下面是解决方法:

主循环:

captureImageDownload()
renameFiles(ID)
createFolder()

您只需在创建图像文件夹之前重命名文件。

于 2019-01-29T15:04:27.817 回答
0

我想这是一个问题os.chdir(save_location)。您必须使用完整路径(请参阅https://www.tutorialspoint.com/python/os_chdir.htm)尝试类似

path = os.path.join(os.getcwd(), save_location)
os.chdir(path)

如果要更改代码中的文件权限,请使用os.getcwd()(请参阅https://www.tutorialspoint.com/python/os_chown.htm)。您可以通过 获取您当前的 UID os.getuid()。所以添加到renameFiles

uid = os.getuid()
gid = os.getgid()
for filename in os.listdir("."):
    filepath = os.path.join(os.getcwd(), filename)
    os.getcwd(filepath, uid, gid)
    ....

所以所有文件都属于当前用户。也许你需要用“sudo”运行你的脚本

于 2019-01-29T14:58:31.303 回答