Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.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
Python fnmatch not finding“不匹配”&&引用;性格_Python_Fnmatch - Fatal编程技术网

Python fnmatch not finding“不匹配”&&引用;性格

Python fnmatch not finding“不匹配”&&引用;性格,python,fnmatch,Python,Fnmatch,我对Python比较陌生,所以如果我删掉任何术语或提出愚蠢的问题,我感到抱歉。我的目标是将包含字符串“&”的特定目录中的任何文件名重命名为“x”。 到目前为止,我已经尝试让python查找这些文件并打印它们的文件名,但返回一个空输出,即使有一个包含字符串“&”的测试文件 这是我的密码: import fnmatch import os for file in os.listdir('B:\\Music'): if fnmatch.fnmatch(, '*&'):

我对Python比较陌生,所以如果我删掉任何术语或提出愚蠢的问题,我感到抱歉。我的目标是将包含字符串“&”的特定目录中的任何文件名重命名为“x”。 到目前为止,我已经尝试让python查找这些文件并打印它们的文件名,但返回一个空输出,即使有一个包含字符串“&”的测试文件

这是我的密码:

import fnmatch
import os

for file in os.listdir('B:\\Music'):
    if fnmatch.fnmatch(, '*&'):
        print(file)

您需要在尝试匹配的字符前后添加一个
*

import fnmatch
import os

for file in os.listdir('B:\\Music'):
    if fnmatch.fnmatch(file, '*&*'):
        print(file)
说明:

*
匹配所有内容,因此:

*&
匹配以
&

&*
匹配以
&

*&*
匹配包含导入操作系统的每个字符串 目录='B:\\Music' 对于os.listdir(目录)中的basename: 如果basename中有“&”: 重命名( join(目录,基本名称), join(目录,basename.replace('&',x')) ) 正如我在主要帖子评论中所说,您不需要
fnmatch
,因为您只想知道basename是否包含
&
。在中使用
就足够了


PS:回到你的标题,你可以参考@adamgy的答案,以获得正确的方式使用
fnmatch
来匹配未来的内容。

哦,谢谢!这就解决了。如果我的答案是有用的,那么如果我的答案是有用的,请考虑将它标记为在帖子旁边的大选中标记。要重命名该文件,可以执行诸如new_filename=file.replace('&',x'),然后执行os.rename(file,new_filename)之类的操作。我遇到以下错误:“FileNotFoundError:[WinError 2]系统找不到指定的文件:”我想它可能在错误的位置搜索该文件(?。我读到了一些关于使用(os.path.join)的内容)是的,因为“file”仅包含文件名,但如果文件不在当前目录中,则还需要添加目录,以便重命名方法可以找到该文件。可以使用os.path.join()执行此操作,或者甚至使用简单的字符串操作,我可以得到一个如何定义文件路径的示例吗?可以使用os.path.join()或您提到的简单字符串[因为,正如我所说,我对python非常陌生:,)]在这种情况下,您可能不需要
fnmatch
。让我在下面提供一个答案。