适用于未安装驱动器号的已卸载驱动器的Python os.walk

时间:2020-06-13 22:22:28

标签: python directory path filenames os.walk

好,所以我编写了一个简单的Python代码,该代码比较了2个文件夹中的所有文件,并从其中一个文件夹中删除了重复文件。我已经使用了几个星期,并且在所有硬盘上都可以正常使用。 但是当我连接手机时,os.walk似乎根本找不到该地址

电话:Blackberry Key2(android) 平台:Jupyter笔记本 问题:通过USB连接时,手机似乎缺少驱动器号(请参见屏幕截图)。我不知道那是什么意思。This PC screenshot 我正在输入os.walk命令在计算机中显示的路径,但无法读取

path2 = r“ RG0005 \ BlackBerryBBF1006 \ Internal shared storage \ Pictures”

我尝试搜索论坛,但我想我不知道没有驱动器号的驱动器是什么,找不到任何相关的信息

感谢您的帮助!!谢谢!

python笔记本的代码:

import os
import pandas as pd
import csv
from datetime import datetime

pd.set_option('display.max_colwidth', 700)

#COMPARE THIS
path1 = r"F:\1_BBK1_20190623_Img_Bckup\1_Pictures"

#DELETE FROM PATH
path2 = r"RG0005\BlackBerryBBF1006\Internal shared storage\Pictures"

f1 = [] #path
f2 = [] #path
a1 = [] #filename
a2 = [] #filename

for root, dirs, files in os.walk(path1):
    for file in files:
        if (file.endswith(".jpg") 
            or file.endswith(".png") 
            or file.endswith(".jpeg") 
            or file.endswith(".mov")  
            or file.endswith(".mp4") 
            or file.endswith(".pdf") 
            or file.endswith(".xlsx") 
            or file.endswith(".txt")):
            f1.append(os.path.join(root))
            a1.append(os.path.join(file))
ds1 = {"Path":f1,"filename":a1}
df1 = pd.DataFrame(ds1)

for root, dirs, files in os.walk(path2):
    for file in files:
        if (file.endswith(".jpg") 
            or file.endswith(".png") 
            or file.endswith(".jpeg") 
            or file.endswith(".mov")  
            or file.endswith(".mp4") 
            or file.endswith(".pdf") 
            or file.endswith(".xlsx") 
            or file.endswith(".txt")):
            f2.append(os.path.join(root))
            a2.append(os.path.join(file))
ds2 = {"Path":f2,"filename":a2}
df2 = pd.DataFrame(ds2)
# df2.head()

2 个答案:

答案 0 :(得分:0)

这样的MTP设备不是普通驱动器,您不能通过路径名访问它。

您唯一的解决方案是使用MTP库连接到设备(或在电话上安装其他文件服务器,例如WebDav,FTP或SFTP服务器并连接到该设备),或使用COM组件执行此操作通过Windows(但不是常规路径。这很困难)。

答案 1 :(得分:0)

“电话上的FTP服务器”选项适用于以下

建立连接

############--- SFTP SETUP
my_session_factory = ftputil.session.session_factory(
                       base_class=ftplib.FTP,
                       port=8888,
                       encrypt_data_channel=True,
                       debug_level=None)

############--- DEFINING VARIABLES
f1 = [] #path
f2 = [] #path
a1 = [] #filename
a2 = [] #filename
pd.set_option('display.max_colwidth', 700)


#---------------------#
# PATH1 : COMPARE FROM (BASE FOLDER TO KEEP)
#---------------------#
# path1 = r"F:\1_BBK1_20190623_Img_Bckup\1_Pictures\To Organize\WhatsApp Images - moved to key2 for sorting"

a_host = ftputil.FTPHost("192.168.0.xxx",'user','pwd',session_factory=my_session_factory)
path1 = "/storage/emulated/0/Pictures/"
a_host.chdir(path1)


#---------------------#
# PATH2 : COMPARE WITH (FOLDER TO DELETE FROM)
#---------------------#
# a_host = ftputil.FTPHost("192.168.1.xxx",'user','pwd',session_factory=my_session_factory)
# path2 = "/storage/emulated/0/Pictures/"
# a_host.chdir(path2)

path2 = r"E:\2_SFTP Transfers Android\Screenshots"

然后在其中查找公用文件并删除

#---------------------#
# CREATING DATAFRAMES
#---------------------#
for root, dirs, files in os.walk(path1):
    for file in files:
        if (file.endswith(".jpg") 
            or file.endswith(".png") 
            or file.endswith(".jpeg") 
            or file.endswith(".mov")  
            or file.endswith(".mp4") 
#             or file.endswith(".pdf") 
#             or file.endswith(".xlsx") 
            or file.endswith(".txt")):
            f1.append(os.path.join(root))
            a1.append(os.path.join(file))
ds1 = {"Path":f1,"filename":a1}
df1 = pd.DataFrame(ds1)

for root, dirs, files in a_host.walk(path2):
    for file in files:
        if (file.endswith(".jpg") 
            or file.endswith(".png")
            or file.endswith(".jpeg") 
            or file.endswith(".mov")  
            or file.endswith(".mp4") 
#             or file.endswith(".pdf") 
#             or file.endswith(".xlsx") 
            or file.endswith(".txt")):
            f2.append(os.path.join(root))
            a2.append(os.path.join(file))
ds2 = {"Path":f2,"filename":a2}
df2 = pd.DataFrame(ds2)
# df2.head(5)
common = df1[df1.filename.isin(df2.filename)]
common.shape
# common.head()