我正在尝试通过读取数据框中特定列的每一行来创建文件夹:
import numpy as np
import pandas as pd
import os
raw_df = pd.read_excel('C:/Users/home/Desktop/test/Inventory.xls')
df = raw_df[["Barcode", "Brand", "product_name"]]
raw_df:snapshot
df:snapshot
我当前的工作目录:C:\ Users \ home \ Desktop \ test \
path = os.getcwd()
new_path = os.chdir(path + "\\products\\")
print ("The new working directory is %s" % os.getcwd())
新的工作目录为C:\ Users \ home \ Desktop \ test \ products \
for i in range(len(df)):
row = df.iloc[i]
barcode = row["Barcode"]
brand = row["Brand"]
product_name = row["Product_Name"]
if(("\\" + barcode + "\\__" + brand + "\\__" + product_name + "\\") == False):
os.makedir("\\" + barcode + "\\__" + brand + "\\__" + product_name + "\\")
else:
print("failed")
我的输出:
失败 失败了 失败了 失败了 失败了 失败
我在原始df中有超过400行,我只是在前6行中对其进行测试。
我要实现的目标如下:End Result snapshot
因此,我尝试使用每一行并使用它们创建一个新目录,并用双下划线“ __”分隔。
附加说明:我已经从工作目录(我自己创建的目录)中删除了这些文件夹,并运行了上面的代码,但仍然没有达到我想要的结果。
我将创建一个bash脚本,但这不是一个选择,因为当我遍历数据帧时,我将需要用各种数据(例如图像等)填充这些文件夹。
任何帮助将不胜感激。如果能够破解,我将继续努力,并提出解决方案,以使所有人受益。
非常感谢,
答案 0 :(得分:0)
尝试使用os.path.join
和os.path.isdir
:
for i in range(len(df)):
row = df.iloc[i]
barcode = row["Barcode"]
brand = row["Brand"]
product_name = row["Product_Name"]
mypath = os.path.join(new_path, barcode, "__" + brand, "__" + product_name)
if (os.path.isdir(mypath)):
print("failed")
else:
os.mkdir(mypath)
答案 1 :(得分:0)
@vercelli,谢谢您的所有帮助,并指出正确的方向,我设法使以下代码正常工作:
for i in range(len(df)):
row = df.iloc[i]
barcode = row["Barcode"]
brand = row["Brand"]
product_name = row["Product_Name"]
mypath = os.getcwd() + "\\" + barcode + "__" + brand + "__" + product_name + "\\"
if(os.path.isdir(path) == False):
os.mkdir(path)
else:
print("failed")
如/:*?“ <> |
由于这些字符是用于创建目录的无效字符,因此我对其他系统不太熟悉,但是Windows当然不接受那些用于使用这些值创建目录的字符。