首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么我不能使用os.listdir更改我的Python程序中文件的名称

为什么我不能使用os.listdir更改我的Python程序中文件的名称
EN

Stack Overflow用户
提问于 2019-01-29 14:27:19
回答 2查看 91关注 0票数 0

我开始创建一个新的3D扫描仪与一个Raspberry Pi 3B +和佳能6D。由于gphoto2库,我有一部分Python代码来恢复图像,但是我不能更改恢复图像的名称,目前,我有两个文件: capt0000.cr2和capt0000.jpg,我必须将它们重命名为"time“+ .jpg或.cr2,但不可能,它们永远不会更改它们的名称。

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

程序启动:

代码语言:javascript
运行
复制
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"]

功能:

代码语言:javascript
运行
复制
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")

主回路:

代码语言:javascript
运行
复制
captureImageDownload()
createFolder()
renameFiles(ID)

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

是因为文件权限知道我不是根用户吗?如果是因为这个原因,那么通常如何更改文件类型的权限,例如.jpg,因为每次它都是关于新图像的,所以权限返回到下面的图像:https://imgur.com/VydSeAH

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-29 15:04:27

问题解决了,以下是解决办法:

主回路:

代码语言:javascript
运行
复制
captureImageDownload()
renameFiles(ID)
createFolder()

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

票数 0
EN

Stack Overflow用户

发布于 2019-01-29 14:58:31

我想这是os.chdir(save_location)的一个问题。您必须使用完全路径(请参阅chdir.htm),尝试如下所示

代码语言:javascript
运行
复制
path = os.path.join(os.getcwd(), save_location)
os.chdir(path)

如果要更改代码中的文件权限,请使用os.getcwd() (请参阅chown.htm)。您可以通过os.getuid()获得当前的UID。所以添加到renameFiles

代码语言:javascript
运行
复制
uid = os.getuid()
gid = os.getgid()
for filename in os.listdir("."):
    filepath = os.path.join(os.getcwd(), filename)
    os.getcwd(filepath, uid, gid)
    ....

因此,所有文件都属于当前用户。也许你需要用"sudo“来运行你的脚本

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54423220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档