我开始创建一个新的3D扫描仪与一个Raspberry Pi 3B +和佳能6D。由于gphoto2库,我有一部分Python代码来恢复图像,但是我不能更改恢复图像的名称,目前,我有两个文件: capt0000.cr2和capt0000.jpg,我必须将它们重命名为"time“+ .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
是因为文件权限知道我不是根用户吗?如果是因为这个原因,那么通常如何更改文件类型的权限,例如.jpg,因为每次它都是关于新图像的,所以权限返回到下面的图像:https://imgur.com/VydSeAH
发布于 2019-01-29 15:04:27
问题解决了,以下是解决办法:
主回路:
captureImageDownload()
renameFiles(ID)
createFolder()
在创建图像文件夹之前,您只需重命名该文件。
发布于 2019-01-29 14:58:31
我想这是os.chdir(save_location)
的一个问题。您必须使用完全路径(请参阅chdir.htm),尝试如下所示
path = os.path.join(os.getcwd(), save_location)
os.chdir(path)
如果要更改代码中的文件权限,请使用os.getcwd()
(请参阅chown.htm)。您可以通过os.getuid()
获得当前的UID。所以添加到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“来运行你的脚本
https://stackoverflow.com/questions/54423220
复制相似问题