我有一个有很多图像的文件。每个图像的名称如下:
我还有一个电子表格,每个图像都是一行,行中的第一个值是名称,名称后的值是各种小数和0来描述每个图像的特征
问题是,当我从工作表中提取名称时,有东西添加了一个小数,这导致文件无法通过shutil.move()传输
import xlrd
import shutil
dataLocation = "C:/Users/User/Documents/Python/Project/sort_solutions_rev1.xlsx"
imageLocBase = "C:/Users/User/Documents/Python/Project/unsorted"
print("Specify which folder to put images in. Type the number only.")
print("1")
print("2")
print("3")
int(typeOfSet) = input("")
#Sorting for folder 1
if int(typeOfSet) == 1:
#Identifying what to move
name = str(sheet.cell(int(nameRow), 0).value)
sortDataStorage = (sheet.cell(int(nameRow), 8).value) #float
sortDataStorageNoFloat = str(sortDataStorage) #non-float
print("Proccessing: " + name)
print(name + " has a correlation of " + (sortDataStorageNoFloat))
#sorting for this folder utilizes the information in column 8)
if sortDataStorage >= sortAc:
print("test success")
folderPath = "C:/Users/User/Documents/Python/Project/Image Folder/Folder1"
shutil.move(imageLocBase + "/" + name, folderPath)
print(name + " has been sorted.")
else:
print(name + " does not meet correlation requirement. Moving to next image.")
我遇到的问题发生在shutil.move(imageLocBase+“/”+名称,folderPath)上 出于某种原因,我的代码从电子表格中获取名称(例如:100304),然后添加一个“.0”,因此当试图移动文件时,它尝试移动100304.0(不存在),而不是100304
使用
pandas
读取Excel文件。正如在对原始问题的评论中所建议的,下面是一个如何使用
pandas
读取Excel文件的快速示例,以及一个数据结构示例如有任何问题,请随意大声询问,或查看docs
数据结构
这完全是人为的,因为我没有你的实际文件的例子
希望这能帮助你开始
建议:
Excel喜欢认为它很聪明,并且会做一些“意想不到的”事情,就像您遇到的十进制(数据类型)问题一样<强>也许考虑将您的图像数据存储在数据库(SQLite)或普通的CSV文件中。< /强>熊猫也可以从其中之一读取!p>
应该有用
如果我们使用您的文件名eg 12345.0并创建一个var
现在我们需要拆分这个变量。在本例中,我们希望在
.
上拆分 所以我们将这个条件保存为第二个var为python使用.split。 这里我们提供了文本(变量名)和pythonsplit命令。 所以,让它成为文字
所以
输出将是
我希望这有帮助 https://www.geeksforgeeks.org/python-string-split/
或
如下面突出显示的,将“转换为浮点”转换为“在中” https://www.geeksforgeeks.org/type-conversion-python/
如果保存为float
这将使浮点值四舍五入(因为其0将向下四舍五入)
或 如果将float另存为字符串
显然,您从电子表格中检索到的值被解析为浮点数,因此当您将其转换为字符串时,它将保留小数部分。
您可以从字符串值中修剪“.0”,或在转换为字符串之前将其转换为整数
您还可以检查电子表格的单元格格式,并确保其设置为正常(idk设置,但不是数字)。有了这个固定值,您的数据可能不会再与.0一起提供了
相关问题 更多 >
编程相关推荐