如何根据ex整理文件

2024-04-20 13:18:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Excel文件,其中包含一个很长的产品标签名,比如(目前,只处理其中3个):

  1. 4049047000037
  2. 4049047000044
  3. 4049047118954个

我的桌面上有一个名为“1”的文件夹,其中包含.jpg文件,标记名如下:

  1. 4049047000037.jpg
  2. 4049047000044.jpg
  3. 4049047118954.jpg

我想写一个代码,如果标签名在我的excel里,我想把那个.jpg文件复制到另一个文件夹。你知道吗

import os
import pandas as pd
movdir = ["C:\Users\muhammedcan\Desktop\1"]
basedir = "C:\Users\muhammedcan\Desktop\2"
i=0

#to see what i have in my folder
print os.listdir("C:/Users/muhammedcan/Desktop/1/")

df= pd.read_excel("deneme.xls", sheetname= "sayfa4")
df1= df.columns[1]

listSepalWidth = df[df1]
print listSepalWidth

#to make file name and product tag name same
for i in listSepalWidth:
    i=str(i)+(".jpg")
    print i

如果我的excel中有一个文件,你能帮我把它复制到另一个文件吗?你知道吗

这是我目前的结果:

['4049047000037.jpg', '4049047000044.jpg', '4049047000068.jpg', 
'4049047000075.jpg', '4049047000082.jpg', '4049047000105.jpg', 
'4049047118947.jpg', '4049047118954.jpg']

4049047000037.jpg
4049047000044.jpg
4049047118954.jpg
4049047000068.jpg
4049047000075.jpg
4049047000082.jpg
4049047118947.jpg
4049047000105.jpg

我用了下面的代码,我收到错误。你知道吗

from shutil import copyfile

copyfile("C:\Users\muhammedcan\Desktop\1", "C:\Users\muhammedcan\Desktop\2")

错误是:

    C:\Python27\python.exe "C:/Users/muhammedcan/Desktop/summer 
    courses/programing/MP4/solution/my_work.py"
    Traceback (most recent call last):
  File "C:/Users/muhammedcan/Desktop/summer courses/programing/MP4/solution/my_work.py", line 3, in <module>
    copyfile("C:\Users\muhammedcan\Desktop\1", 

进程已完成,退出代码为1


Tags: 文件代码inimportdfmy标签excel
1条回答
网友
1楼 · 发布于 2024-04-20 13:18:32

以下是您需要的:

import os
import glob
import pandas as pd
import shutil

source_folder = r"C:\Users\muhammedcan\Desktop\1"
destination_folder = r"C:\Users\muhammedcan\Desktop\2"

available_filenames = [os.path.basename(fn) for fn in glob.glob(os.path.join(source_folder, '*.jpg'))]
df = pd.read_excel("deneme.xls", sheetname="sayfa4")

for tag_name in df.iloc[:,1]:
    filename = "{}.jpg".format(tag_name)

    if filename in available_filenames:
        print "{} - found".format(filename)
        shutil.copyfile(os.path.join(source_folder, filename), os.path.join(destination_folder, filename))
    else:
        print "{} - not found".format(filename)

If首先创建在source_folder中找到的.jpg文件名列表。然后它将Excel文件加载到pandas中,并遍历第二列。如果在available_filenames列表中找到标记名,shutil.copyfile()函数用于将文件从1复制到2。注os.path.join()用于将文件的各个部分安全地连接在一起。你知道吗


要使其成为一个函数,使您也可以执行“pdf”,您可以执行以下操作:

import os
import glob
import pandas as pd
import shutil

source_folder = r"C:\Users\muhammedcan\Desktop\1"
destination_folder = r"C:\Users\muhammedcan\Desktop\2"

df = pd.read_excel("deneme.xls", sheetname="sayfa4")


def copy_files(source_folder, destination_folder, extension):
    available_filenames = [os.path.basename(fn) for fn in glob.glob(os.path.join(source_folder, '*.{}'.format(extension)))]

    for tag_name in df.iloc[:,1]:
        filename = "{}.{}".format(tag_name, extension)

        if filename in available_filenames:
            print "{} - found".format(filename)
            shutil.copyfile(os.path.join(source_folder, filename), os.path.join(destination_folder, filename))
        else:
            print "{} - not found".format(filename)

copy_files(source_folder, destination_folder, 'jpg')            
copy_files(source_folder, destination_folder, 'pdf')                   

这假设两者使用相同的deneme.xls。如果不是,它可以作为另一个参数传递给函数。你知道吗

相关问题 更多 >