Python 查找文件并使用多个条件进行复制

Python 查找文件并使用多个条件进行复制,python,Python,嗨,我得到了一个DF,它包含两列,一列是发票号,另一列是客户名称 有没有办法找到同时包含“香蕉”和“A5000”的所有文件(按名称) 昨天我试着编写一个代码,一个非常好的家伙帮我通过一个标准,但当我尝试添加另一个标准时,我又被卡住了 也许我不能在这一行中使用“and:files=list(path.rglob(f'*{v and s}*')),我尝试了“&”,但没有成功 data = {'Invoice':['A5000','B8000','C3000'],'Client':['Banana',

嗨,我得到了一个DF,它包含两列,一列是发票号,另一列是客户名称

有没有办法找到同时包含“香蕉”和“A5000”的所有文件(按名称)

昨天我试着编写一个代码,一个非常好的家伙帮我通过一个标准,但当我尝试添加另一个标准时,我又被卡住了

也许我不能在这一行中使用“and:
files=list(path.rglob(f'*{v and s}*'))
,我尝试了“&”,但没有成功

data = {'Invoice':['A5000','B8000','C3000'],'Client':['Banana','Orange','Lemon']}

df = pd.DataFrame(data=data)



path = Path('D:/Pyfilesearch')
dest = Path('D:/Dest')



for v,s in zip(df.Invoice,df.Client):
    files = list(path.rglob(f'*{v and s}*'))
    files = [f for f in files if f.is_file()]
    for f in files:
        print(f)


谢谢。

我会使用集合和交集,如下例所示:

p = Path("files")

data = {'Invoice':['A5000','B8000','C3000'],'Client':['Banana','Orange','Lemon']}
df = pd.DataFrame(data=data)

for i, c in zip(df.Invoice, df.Client):
    s1 = set(p.rglob(f"*{i}*"))
    s2 = set(p.rglob(f"*{c}*"))
    i_c_files = s1.intersection(s2)
    print(i_c_files)
    if i_c_files:
        first_file = list(i_c_files)[0]
        print("the first file is " + str(first_file))

在file.stem中使用子字符串

import pandas as pd
from pathlib import Path

data = {'Invoice':['A5000','B8000','C3000'],'Client':['Banana','Orange','Lemon']}
df = pd.DataFrame(data=data)

path = Path('D:/Pyfilesearch')
for v, s in zip(df.Invoice,df.Client):
    files = [f for f in path.iterdir()
                if f.is_file() and v in f.stem and s in f.stem]
    for f in files:
        print(str(f))
"""
D:\Pyfilesearch\A5000 Banana.txt
D:\Pyfilesearch\B8000 Orange.txt
D:\Pyfilesearch\C3000 Lemon.txt
"""

嗨,聪明的解决方案,它返回正确的路径,但是当我尝试关闭它时,它会抛出一个异常:TypeError:预期str、bytes或os.PathLike对象,而不是设置解决方案的日期,以便在代码中包含循环。看一看,答案是Hi ty,但它不起作用,它什么也不打印。我创建了Pyfilesearch目录,有9个文件,然后添加一些语句使其可执行,然后它就起作用了。如上所述更新。您是正确的,我的文件位于D:\Pyfileseach\的子目录中,对此表示抱歉。更改为path.glob(“*/”),现在工作正常,请再次重试!