首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在os.listdir中给出windows目录路径( path )?

如何在os.listdir中给出windows目录路径( path )?
EN

Stack Overflow用户
提问于 2020-04-19 16:18:01
回答 4查看 748关注 0票数 0

当我试图在os.listdir()中给出windows目录路径时,它给出了错误。我的代码片段:

代码语言:javascript
复制
with os.listdir('C:\Users\Hp\Desktop\video') as entries:

我知道python接受'\‘作为转义序列,但我在windows上找不到任何替代序列。给出的错误是:

代码语言:javascript
复制
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX

我已经尝试了下面的解决方案,但它给了我一些其他错误:

代码语言:javascript
复制
AttributeError: __enter__

我的代码有什么问题吗:

代码语言:javascript
复制
import os
import moviepy.editor as mp

#location = os.path.join("C:", "Users", "Hp", "Desktop", "video")

with os.listdir("C:\\Users\\Hp\\Desktop\\video") as entries:
    for entry in entries:
        if(".py" or ".png") not in entry:
            video = mp.VideoFileClip("entry.name")

            logo = (mp.ImageClip("logo.png")
                      .set_duration(video.duration)
                      .resize(height=50) # if you need to resize...
                      .margin(right=8, top=8, opacity=0) # (optional) logo-border padding
                      .set_pos(("right","top")))

            final = mp.CompositeVideoClip([video, logo])
            final.write_videofile('o' + "entry.name")
EN

回答 4

Stack Overflow用户

发布于 2020-04-19 16:20:12

或者使用忽略反斜杠作为转义字符的原始字符串

代码语言:javascript
复制
with os.listdir(r'C:\Users\Hp\Desktop\video') as entries:

或者使用文字反斜杠(转义反斜杠)

代码语言:javascript
复制
with os.listdir('C:\\Users\\Hp\\Desktop\\video') as entries:

或者只使用正斜杠。它们在Windows中到处都能工作。

代码语言:javascript
复制
with os.listdir('C:/Users/Hp/Desktop/video') as entries:
票数 2
EN

Stack Overflow用户

发布于 2020-04-19 16:37:06

@Adam Smith的答案是正确的。但我想指出一个错误。os.listdir不返回上下文管理器(只是一个普通的列表),所以将它与with关键字一起使用是无用的。正常调用函数。

代码语言:javascript
复制
entries = os.listdir('C:\Users\Hp\Desktop\video')

而且你不会得到AttributeError: __enter__错误。

with关键字是一种在block之前调用obj.__enter__(),在block之后调用obj.__exit__()的自动方法。如果对象(这里是从os.listdir返回的列表)没有这些方法,您将得到一个错误。

票数 0
EN

Stack Overflow用户

发布于 2020-04-19 17:24:16

代码语言:javascript
复制
import os
import moviepy.editor as mp

path="C:\\Users\\Hp\\Desktop\\video"

entries=os.listdir(path)
for entry in entries:
    if(".py" or ".png") not in entry:
        video = mp.VideoFileClip("entry.name")

        logo = (mp.ImageClip("logo.png")
                .set_duration(video.duration)
                .resize(height=50) # if you need to resize...
                .margin(right=8, top=8, opacity=0) # (optional) logo-border padding
                .set_pos(("right","top")))

        final = mp.CompositeVideoClip([video, logo])
        final.write_videofile('o' + "entry.name")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61301410

复制
相关文章

相似问题

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