Python 自动将文件传输到文件夹(OpenCV)
首先,以下是我的代码:Python 自动将文件传输到文件夹(OpenCV),python,opencv,path,file-transfer,expanduser,Python,Opencv,Path,File Transfer,Expanduser,首先,以下是我的代码: import cv2 import os,errno from os.path import expanduser from datetime import datetime import glob import numpy as np ##################### Creating folder & subfolders ##################### b_temp_folder = 'b_temp' c_path = os.pat
import cv2
import os,errno
from os.path import expanduser
from datetime import datetime
import glob
import numpy as np
##################### Creating folder & subfolders #####################
b_temp_folder = 'b_temp'
c_path = os.path.join('C:\\', b_temp_folder)
try:
c_dir = os.mkdir(c_path)
except OSError as e:
if e.errno != errno.EEXIST:
raise
now = datetime.now()
id_folder = now.strftime('%Y%m%d-%H%M%S-%f')
b_path = os.path.join('C:\\b_temp\\',id_folder)
b_dir = os.mkdir(b_path)
##################### Images processing #####################
for img in glob.glob('C:\\Users\\User\\Desktop\\Images\\*.tif'):
cv_img = cv2.imread(img)
cv_show = cv2.imshow('img',cv_img)
cv2.waitKey(0)
在第一部分中,正在创建一些文件夹。首先在“C:\”中创建一个文件夹,然后在其中创建一个名为datetime的文件夹。每次执行代码时都会创建最后一个,因此它们是唯一的(按毫秒排序)
运行的将一次显示所有图像
问题是:如何将每个图像发送到它的唯一文件夹?我的意思是,第一个图像到第一个唯一的文件夹,等等
按照逻辑,每次运行所有代码时都会创建文件夹(一次一个文件夹)。相反,在同一个实例中迭代所有图像。
我如何修改这个
另外,正如你所看到的,我在C驱动器中创建了这个临时文件夹。我的计划是让这段代码有点跨平台。我尝试了os.path.expanduser,但它似乎不起作用。根本没有创建文件夹。。。有人知道为什么吗
谢谢我建议在for循环中创建文件夹。您将一次访问一个图像和一个文件夹(如果这是我从您的描述中理解的话)
更新代码。来自“img”路径的图像文件将存储在b_路径中。这对我很有效。以下是我所做的。该代码创建一个主文件夹,在主文件夹中创建一个唯一的文件夹,并立即传输一个文件
import cv2
import os,errno
from os.path import expanduser
from datetime import datetime
import glob
import numpy as np
import shutil
print('\ncreating main folder (temp) - "b_temp" IN C: \n')
b_temp_folder = 'b_temp'
c_path = os.path.join('C:\\', b_temp_folder)
try:
c_dir = os.mkdir(c_path)
except OSError as e:
if e.errno != errno.EEXIST:
raise
print('creating unique folder in main folder - "id_folder" IN "b_temp" \n')
now = datetime.now()
id_folder = now.strftime('%Y%m%d-%H%M%S-%f')
b_path = os.path.join('C:\\b_temp\\',id_folder)
b_dir = os.mkdir(b_path)
print('moving image to unique folder \n')
idx = 0
for img in glob.glob('C:\\Users\\User\\Desktop\\Images\\' + str(idx) + '*.tif'):
cv_img = cv2.imread(img)
idx+=1
shutil.move(img, b_path)
现在,有人知道如何使所有代码更加跨平台吗?我将所有文件都放在C:\,但这似乎不是一个好的解决方案…是的,创建的每个文件夹对应一个图像。但代码似乎不起作用。。。cv_show不是一个文件夹,只是一个显示图像的命令。仍然不起作用。我想我必须改变几乎所有的。。。也许解决办法是放置一个计数器,并立即生成一个映像,程序每次运行一个映像。之后,我将执行一个main调用代码,并在文件夹中有图像的情况下对其进行多次迭代..更新的代码。这个对我有用。请试一试,谢谢。信不信由你,它还是不起作用。没有图像正在传输。相反,我在我的代码中做了一些更改,它一次只处理一个图像(创建主文件夹-->创建唯一文件夹-->将图像移动到唯一文件夹)。在一次迭代中完成。我把它作为回答,看一看。。
import cv2
import os,errno
from os.path import expanduser
from datetime import datetime
import glob
import numpy as np
import shutil
print('\ncreating main folder (temp) - "b_temp" IN C: \n')
b_temp_folder = 'b_temp'
c_path = os.path.join('C:\\', b_temp_folder)
try:
c_dir = os.mkdir(c_path)
except OSError as e:
if e.errno != errno.EEXIST:
raise
print('creating unique folder in main folder - "id_folder" IN "b_temp" \n')
now = datetime.now()
id_folder = now.strftime('%Y%m%d-%H%M%S-%f')
b_path = os.path.join('C:\\b_temp\\',id_folder)
b_dir = os.mkdir(b_path)
print('moving image to unique folder \n')
idx = 0
for img in glob.glob('C:\\Users\\User\\Desktop\\Images\\' + str(idx) + '*.tif'):
cv_img = cv2.imread(img)
idx+=1
shutil.move(img, b_path)