我开始用Raspberry Pi 3B +和佳能6D创建一个新的3D扫描仪。由于有了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
是否由于文件许可权知道我不是root用户?如果是因为这个原因,通常如何更改文件类型的权限,例如.jpg,因为每次它都是关于新图像的,因此权限返回到以下图像: https://imgur.com/VydSeAH
答案 0 :(得分:0)
我猜这是os.chdir(save_location)
的问题。您必须使用 complete 路径(请参阅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)。您可以通过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”运行脚本
答案 1 :(得分:0)
问题已解决,下面是解决方法:
主循环:
captureImageDownload()
renameFiles(ID)
createFolder()
您只需要在创建图像文件夹之前重命名文件即可。