Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于在文件夹中创建m3u文件的Python脚本_Python_Batch File_M3u - Fatal编程技术网

用于在文件夹中创建m3u文件的Python脚本

用于在文件夹中创建m3u文件的Python脚本,python,batch-file,m3u,Python,Batch File,M3u,我正在尝试运行这个特定的python脚本来在子文件夹中创建.m3u文件,但它不起作用,请给我一个错误,欢迎提供任何帮助。 m3u文件是具有指定扩展名的子文件夹内容的简单跟踪列表,并以子文件夹命名,如下所示(扩展名.aaa和.bbb仅为示例): 文件夹1(包含“文件1.aaa”、“文件2.aaa”等) 文件夹1.m3u使用此列表在文件夹1内生成 文件1.aaa 文件2.aaa 文件夹2(包含“文件1.bbb”、“文件2.bbb”等) 文件夹2.m3u使用此列表在文件夹2内生成 文件1.bb

我正在尝试运行这个特定的python脚本来在子文件夹中创建.m3u文件,但它不起作用,请给我一个错误,欢迎提供任何帮助。 m3u文件是具有指定扩展名的子文件夹内容的简单跟踪列表,并以子文件夹命名,如下所示(扩展名.aaa和.bbb仅为示例):

  • 文件夹1(包含“文件1.aaa”、“文件2.aaa”等)
文件夹1.m3u使用此列表在文件夹1内生成

文件1.aaa

文件2.aaa

  • 文件夹2(包含“文件1.bbb”、“文件2.bbb”等)
文件夹2.m3u使用此列表在文件夹2内生成

文件1.bbb

文件2.bbb

下面是一个名为makem3u.py的脚本(不是我的,我对python了解不多):

我在尝试运行时遇到此错误:

Traceback (most recent call last):
  File "makem3u.py", line 16, in <module>
    contents = os.listdir(os.path.join(cwd, d))
NotADirectoryError: [WinError 267] The directory name is invalid: 'path\\to\\file\\makem3u.py'
回溯(最近一次呼叫最后一次):
文件“makem3u.py”,第16行,在
contents=os.listdir(os.path.join(cwd,d))
NotDirectoryError:[WinError 267]目录名无效:“path\\to\\file\\makem3u.py”
makem3u.py位于一个包含所述子文件夹的文件夹中

Windows 10,Python 3.8.5,Python安装正确,路径在环境变量中,我可以很好地运行其他脚本

我做错了什么,我该如何解决?有没有像创建.bat文件这样的非python替代方法?很抱歉问了这么多问题,我对这些事一无所知。提前谢谢你


此外,是否有方法批量压缩子文件夹中的所有文件(生成的m3u+原始文件)并在该子文件夹后命名每个压缩?这是一个额外的变量,但如果可能的话会很有帮助。

您的
dirs
变量也包含文件名,因此您试图在
path\\to\\file\\makem3u.py
下列出文件(显然这不是一个目录)。改为使用
os.walk
:或使用
os.path.isdir()
检查
d
是否为目录。感谢您的回复。我明白了,所以如果输入是一个目录,那么脚本将工作,但如果输入是一个文件,则不会工作。问题是我对如何做到这一点几乎一无所知。我试图替换命令,但我得到其他错误。。。我读过这篇文章,但我不太明白,现在就在你的
for
行后面添加一个
if os.path.isdir(d):
。谢谢,这很有效。我遇到了另一个错误
TypeError:需要一个类似字节的对象,而不是'str'
,但是在我为
'w'
替换了
'wb'
之后,它现在正在生成m3u文件。现在我试图弄明白为什么它在m3u中只写“文件夹名\文件名”,而不写“文件名”。此外,m3u文件都显示在父文件夹中,而不是以其命名的每个子文件夹中,但这是我可以了解的一件小事。
Traceback (most recent call last):
  File "makem3u.py", line 16, in <module>
    contents = os.listdir(os.path.join(cwd, d))
NotADirectoryError: [WinError 267] The directory name is invalid: 'path\\to\\file\\makem3u.py'