簡體   English   中英

如何在os.listdir(path)中給出windows目錄路徑?

[英]How to give windows directory path in os.listdir(path)?

當我試圖在 os.listdir() 中給出 windows 目錄路徑時,它給出了錯誤。 我的代碼片段:

with os.listdir('C:\Users\Hp\Desktop\video') as entries:

我知道 python 將 '\' 作為轉義序列,但我在 windows 上找不到任何替代方案。 給出的錯誤是:

SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX

我嘗試了以下解決方案,但它給了我一些其他錯誤:-

AttributeError: __enter__

我的代碼有什么問題嗎:

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")

使用忽略反斜杠作為轉義字符的原始字符串

with os.listdir(r'C:\Users\Hp\Desktop\video') as entries:

或使用文字反斜杠(轉義的反斜杠)

with os.listdir('C:\\Users\\Hp\\Desktop\\video') as entries:

或者只使用正斜杠。 他們在 Windows 中到處工作。

with os.listdir('C:/Users/Hp/Desktop/video') as entries:

@Adam Smith 的回答是正確的。 但我想指出一個錯誤。 os.listdir不返回上下文管理器(只是一個普通列表),因此將其與with關鍵字一起使用是無用的。 正常調用function。

entries = os.listdir('C:\Users\Hp\Desktop\video')

你不會得到AttributeError: __enter__錯誤。

with關鍵字是一種在塊之前調用obj.__enter__()並在其之后調用 obj obj.__exit__()的自動方式。 如果 object(這里是從os.listdir返回的列表)沒有這些方法,您將收到錯誤消息。

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")

最好使用pathlib python 庫。 這樣的問題在里面處理得很好。

from pathlib import Path
p = Path('C:\Users\Hp\Desktop\video') # Use any format
for file in p.iterdir():
    # Every 'file' is a 'Path' variable with full path
    file.name # Returns full filename
    file.suffix # Returns extension. e.g. '.jpg'
    str(file) # Returns path as python string

請參閱此處了解更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM