python文件处理-检查文件名/路径是否正确

内容涉及:检查路径是否存在,文件名长度是否一直,将重复的文件夹重命名

# -*- coding: utf-8 -*-
import os
import sys
import numpy as np
import copy
from collections import Counter

'''
标注文件夹名:data ,csv文件深度4
原片文件夹名:image
长度:11
待修改索引:3
'''
image = 'image'
data = 'data'
path = os.getcwd()
path_1 = path + '/' + data
list_name = os.listdir(path_1)
Allfile_name = []
Allfile_name_1 = []
Allfile_name_1_root = []
Allfile_name_jpg = []
Allfile_name_rename = []
Allfile_name_rename_root = []
name_n = []
for n in list_name:
    path_2 = path_1 + '/' + n
    list_name_1 = os.listdir(path_2)
    for k in list_name_1:
        path_3 = path_2 + '/' + k
        list_name_2 = os.listdir(path_3)
        for m in list_name_2:
            path_4 = path_3 + '/' + m
            Allfile_name.append(path_4)
            Allfile_name_1.append(m)
            Allfile_name_1_root.append(path_2)
            Allfile_name_rename.append(k)
            Allfile_name_rename_root.append(path_3)
            name_n.append(n)
#print(Allfile_name)
#print(Allfile_name_1)
#print(Allfile_name_rename)
#print(Allfile_name_rename_root)
#raise RuntimeError()

for n,m in zip(Allfile_name_1,Allfile_name):
    if len(n)!=14:
        raise RuntimeError("file name is too long")
    if n[6] == 'X':
        rename = list(n)
        rename[6] = 'x'
        rename = ''.join(rename)
        path_5 = m[:-15] + '/' + rename
        os.rename(m,path_5)
print("标注文件格式 OK!")
print("... ...")
print("csv type is OK!")
#raise RuntimeError()
#根据原片jpg文件路径修改jpg_root_rename
str_start = 'D:\BaiduNetdiskDownload/'
str_start = 'D:\BaiduNetdiskDownload\细胞识别项目\原片\阳性 0603/'
str_start = 'D:\yfq_data\data0812\data\data2019-8-9/'
for n in Allfile_name:
    n = n.replace(' ', '')
#    print(n)
#    print("++++++++++++++++++")
    binglihao = copy.copy(n[-15-8:-15])
    if len(binglihao)>7:
        binglihao = binglihao[1:8]
    m = n[-15:]
#    print("binglihao: ",binglihao)
#    print(m)
#    print(m[:-3] + 'JPG')
    jpg_root_rename = copy.copy(m[:-3]+'JPG')
 #   print("lala",jpg_root_rename)
 #   print("str_start type",type(str_start))
 #   print("binglihao type",type(binglihao))
 #   print("aaa",type('\Images'))
 #   print("jpg_root_rename type",type(jpg_root_rename))
    #new_root = str_start + binglihao + '/Images' + jpg_root_rename
    new_root = str_start + binglihao + jpg_root_rename
    print("==============================")
    print(new_root)
 #   raise RuntimeError()


    if not os.path.exists(new_root):
        Allfile_name_jpg.append(jpg_root_rename)
if len(Allfile_name_jpg)>0:
   for n in Allfile_name_jpg:
       print(n)
else:
    print("所有标注文件均存在对应原片!")
    print("... ...")
    print("all cav exits")
#print(list_name)
#print(name_n)
#raise RuntimeError()
#将重复的病例号重命名
#print("+++++++++++++++++++++++++++++")
#print(len(Allfile_name_rename))
#print(Allfile_name_1_root[1])
#print(Allfile_name_1_root[2])
temp = np.zeros((2,len(Allfile_name_rename)),dtype = 'int')
n = 0
for m in Allfile_name_rename:
    temp[1,n] = m[-7:]
    n = n + 1
for n in range(0,len(Allfile_name_rename)):
    temp[0,n] = list(temp[1,:]).count(temp[1,n])
temp_copy  = copy.copy(temp)
count = len(Allfile_name_rename)
count1 = 0
for n in temp[1,:]:
    count2 = 0
    for m in temp[1,:]:
        temp[0,count1] = list(temp[1,0:count2]).count(temp[1,count1])
        if count1  == count2:
            continue
        count2 = count2 + 1
    count1 = count1 + 1
str_end = []
sign_2 = 0
#print("+++++++++++++++++++++")
#print(temp_copy)
#print(temp)
#raise RuntimeError()
for n in range(0,count):
    if temp_copy[0,n] != 1:
        sign_2 = 1
        if temp[0,n] == 0:
            str_end = 'A'
        elif temp[0,n] == 1:
            str_end = 'B'
        elif temp[0,n] == 2:
            str_end = 'C'
        elif temp[0,n] == 3:
            str_end = 'D'
        elif temp[0,n] == 4:
            str_end = 'E'
        elif temp[0,n] == 5:
            str_end = 'F'
        else:
            raise RuntimeError("重复病例号过多,请修改程序!!!")
        dirname_1 = Allfile_name_rename_root[n]
        print("=================================================")
 #       print(dirname_1)
        rename_1 = dirname_1 + str_end
  #      print(rename_1)
#        os.rename(dirname_1, rename_1)

if sign_2 == 0:
    print("没有重复病例")
else:
    print("病例号重命名 OK")
print(Allfile_name_rename)

 

转载于:https://www.cnblogs.com/niulang/p/11363766.html

### 回答1: 可能是以下原因之一: 1. 文件路径写错了:请检查是否写错了路径或者文件名,确保路径文件名正确。 2. 文件不存在:请确认该文件是否存在于指定的路径中。 3. 权限问题:请检查是否有读取该文件的权限。 如果以上都没有问题,可以尝试使用其他方式打开该文件,如使用绝对路径或者使用文件夹浏览器打开。 ### 回答2: 在解决问题之前,我们需要先了解一些基础知识。 首先,“D:/cunchu/cifar-10-python/cifar-10-batches-py/data_batch_1”是一个文件路径,用于指定文件所在的位置。但是需要注意的是,在不同的操作系统上,文件路径的格式可能会有所不同。例如,在Windows操作系统上,路径通常是以盘符(例如D:)开头,而在Linux或Mac操作系统上,路径通常是以斜杠(/)开头。 其次,报错信息可能是由于以下几个原因导致的: 1. 文件路径错误:请确保你提供的路径正确的,并且文件确实存在于该路径下。可通过在文件资源管理器中手动浏览该路径,来验证文件是否存在。 2. 文件权限问题:确保你有权限访问该文件。有时,文件可能被设置为只读或不可访问。你可以尝试在文件上右键单击,然后选择“属性”来查看文件的权限设置。 3. 操作系统差异:如前所述,不同的操作系统可能使用不同的文件路径格式。请确保你正确使用了当前操作系统支持的路径格式。 如果你确定文件路径正确的,并且你有权限访问该文件,但仍然遇到问题,可能是其他原因导致的。这时可以考虑检查你的代码是否正确是否存在其他导致该文件无法读取的问题。 总之,当报错指示找不到文件时,需要仔细检查文件路径正确性、文件权限问题以及操作系统差异等可能原因,以便解决问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值