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