ファイル操作は、少し知識レコードは、分割文字と数字の文字列を、指定された文字を削除見つけ、コピー数のリスト要素の統計情報、ファイル、移動、削除、txtの操作を除いてみてください、男ピンインを--list要素をチェック

ディレクトリ

1.ターゲットリスト内かどうか、要素をチェックしてください:

2.試してみる···間違った操作を行う除く外

同じ数の要素3.統計リスト(一覧)

4.ファイルのコピー、移動、削除操作

5.読むのTXTファイル、および行ずつ表示されます

6.文字の指定した文字列と文字列を削除します。

7.への分割の形で文字と数字の文字列

xpinyinピンインで8.python

特定の文字が表示さで数9.python統計xmlファイル

補足10:フォルダ内のデータは、一貫性に基づいたファイル名は、対応するフォルダに保存されています



1.ターゲットリスト内かどうか、要素をチェックしてください:

list_samename=['ChenZhangWei', 'HuangXiaoDon', 'YuYunYuan', 'ZhangWei', 'WangXiao']

int_path = 'F:\\3人TB\\dcmraw'
    for root, dirs, files in os.walk(int_path):
        for filename in files:  # 遍历所有文件

            if filename in list_samename:
                file_path = os.path.join(root, filename)
                print(file_path)

結果:そこに、中のファイル名の要素list_samenameと全く同じであったフルパスのファイル名がプリントアウト置きます


2.試してみる···間違った操作を行う除く外

毎日のプロセスでは、多くの場合、動作条件に遭遇し、エラーの現象の出現満たされていません。エラーが発生し、それがエラーのうち、プログラムを中断するためのイニシアチブを取るでしょう。

、プログラムの実行、我々は選択した。この時間を終了し、自動的に私たちを助けるために熱心なので、時々 、私たちは、システムを必要としないプログラムが継続するように、別の動作期間を行い、間違った時に会ったとき、

            try:
                ds = pydicom.dcmread(os.path.join(root, filename), force=True)  # 读取dcm

                patient_name = str(ds.PatientName)
                patient_slicenum = str(ds.InstanceNumber)
                slice_thickness = str(round(ds.SliceThickness,3))
                print(slice_thickness)
                new_filename = filename.split(".dcm")[0]+"_"+slice_thickness+".dcm"
                #print("{}***{}***{}".format(patient_name, patient_slicenum, slice_thickness))

                os.rename(os.path.join(root, filename), os.path.join(root, new_filename))
                print(new_filename)

            except:
                print("######################################################" + filename)
                continue

名前を変更し、内部パラメータを得るために、読んDCMファイル(医用画像保管形式):この上に、このようなことをやっています

  1. DCMファイルを読みます
  2. DCMファイルにPatientNameを取得し、InstanceNumber、SliceThickness三つのパラメータ
  3. 新しいファイル名の組み合わせ
  4. os.renameリネーム

この処理は、上記実施され、それはのようないくつかの問題であってもよいです

  1. 読むDCMファイルが存在しません。
  2. DCMファイル破損している、PatientNameパラメータが存在しない、または削除
  3. 新しいファイル名の組み合わせ時に、国境を越えたヒトエラー等
  4. os.rename名の変更は失敗します

限り、上記のエラーが発生発生することと、それが自動的に作動さ除き、一部の飛び出ししようとすると、サイクルの次のラウンドに継続されます


同じ数の要素3.統計リスト(一覧)

タスク:文字列名のLIST_NAME、印刷キューは、同じ要素番号と名前の数よりも大きい1

def re_add_name():
    a_dict = {}
    list_name=["annan","annan","hh","mam","mam"]
    for i in list_name:
        if list_name.count(i)>1:
            a_dict[i]=list_name.count(i)
    print(a_dict)

 


4.ファイルのコピー、移動、削除操作

import shutil

# 复制操作
# shutil.copy(原文件完整path,保存到的文件夹完整path)
shutil.copy(os.path.join(root, filename), os.path.join(save_path, '85测试出错原图'))

# 移动操作
shutil.move(os.path.join(root, filename), os.path.join(save_path, '85测试出错原图'))

# 实现对文件的删除
os.unlink(mark_pne_path) 

# 对文件进行重命名
os.rename(os.path.join(root, filename), os.path.join(root, new_filename))

詳細については、こちらを参照してくださいます。https://blog.csdn.net/wsLJQian/article/details/92832695


5.読むのTXTファイル、および行ずつ表示されます

ここで述べたように、説明するのあまりをしない、それが線でTXTファイル内容行を読んで現れ、Dianshaは自分で決める再びそれを行うことです

def readTXT():
    list_name=[]
    for line in open("./list_not_predOK.txt"):
        print(line.strip())

誰かがなぜただ、各ラインの存在に起因する印刷(行)形式を使用していない、あなたに尋ねるべき改行です。

ここで使用されるストリップ()メソッドは、後述するように

Pythonのストリップ()指定した文字列(改行スペースまたはデフォルト)または文字列の先頭と末尾を除去する方法。

注:このメソッドは、文字の先頭または末尾を削除することができ、文字は中央部分を削除することはできません。


6.文字の指定した文字列と文字列を削除します。

この時点で次の文字列は、IMが含まれているしたくない、のような文字列のルックスの束は、IMは、この文字を排除することであり、それを行う方法?ここでは、オペレータや検索クエリ。

xiaobai_CVIMggoo1.png、xiaobai_CVIMggoo2.png、xiaobai_CVIMggoo2.png、xiaobai_CVIMggoo2.png···

def Findname():

    list_name=["xiaobai_CVIMggoo1.png","小白_CVIMggoo2.png","xiaobai_CVIMggoo2.png","小白_CVIMggoo2.png"]

    for name in list_name:  # 遍历所有文件
        print(name)
        pos = name.find("IM")  # 把文件带有_label的字符删除

        print("pos_num:", pos)
        if (pos == -1):
            continue
        newname = name[0:pos] + name[pos+2:-1]+"png"
        print(newname)
        print("***********")

注:初めてここで返さposがターゲット最初の文字位置を見つけました


7.への分割の形で文字と数字の文字列

、写真を見て言ってあまり話をしなかった、具体的な詳細はここで見つけることができます:https://blog.csdn.net/wsLJQian/article/details/100987574

注意すべきポイントは、また奇妙な言葉--- GROUPBYです。

パンダは、柔軟かつ効率的なGROUPBYを提供する:(グループ化は、スプリット適用 -combine) 自然な方法で、データセットと他の動作の概要をダイシング、スライシングにあなたを可能にする機能を、。(であってもよい1つ以上のキーに応じた機能、アレイ、又はデータフレームのオブジェクトパンダ分割列名)。パケットは、カウント、平均、標準偏差、またはユーザ定義関数としての要約統計量を計算します。

例えばGBリストは、この機能の状態に応じて、リストを再分類されています

from itertools import groupby

lst=[2,8,6,9,15,16,20,30,65,123,95,12]

def gb(num):
    if num<10:
        return 'less'
    elif num>50:
        return 'great'
    else:
        return 'middle'

print([(k,list(g)) for k,g in groupby(sorted(lst),key=gb)])

 例2いくつかの相互に順次リストにリストスプリット

from itertools import groupby

sorted_list_k=[1,2,3,4,5,12,11,10,9,65,66,64,63,67]
sorted_list_k = sorted(sorted_list_k) # 冒泡排序

fun = lambda x: x[1]-x[0]
for k, g in groupby(enumerate(sorted_list_k), fun):

    list_continuous_slice = [j for i, j in g]  # 连续slice数字的列表
    print(list_continuous_slice)


xpinyinピンインで8.python

from xpinyin import Pinyin
def readTXT():

    p=Pinyin()
    print(p.get_pinyin(u"小白CV",""))

ない小さな印刷は、ああ、私を許して。


特定の文字が表示さで数9.python統計xmlファイル

 述べたように、本研究の被写界深度は、情報のカテゴリを標識する形で、名詞のラベルラベルの後に使用されるXMLファイルの文字に保存されます。

あなたは、統計にしたい場合は、この時点では、各カテゴリの数は、単に(画像と同じ図はさまざまなカテゴリのではなく、車/木/人などの両方を含むことが十分ではありませんどのように多くの写真を参照することに依存している正確にどのくらいの時間であり、など)

この時点で、最も効果的な方法は、XMLファイルを直接操作することで、各カテゴリに最初の手の情報を反応した取得

#!/usr/bin/env python
# -*- coding:utf-8 -*-

import os
import xml.etree.ElementTree as ET

inflection_list=[]
for xml_file in os.listdir("D:/image/voc_inflection4/Annotations/"):
    a, b = os.path.splitext(xml_file)
    tree = ET.parse("D:/image/voc_inflection4/Annotations/" + a + ".xml")
    root = tree.getroot()
    for inflection_name in root.iter('object'):
        target = inflection_name.find('name').text
        inflection_list.append(target)

inflection_set=set(inflection_list)

inflection_dict={}
for i in inflection_set:
    inflection_dict[i]=inflection_list.count(i)

#print(inflection_list)
print(inflection_dict)

ここでは、今日、フォローアップは、歓迎の注意を更新していきます


補足10:フォルダ内のデータは、一貫性に基づいたファイル名は、対応するフォルダに保存されています

def file2document():

    int_path = 'F:\\TB肺结核\\database\\train\\pneumonia_raw'
    flag="(0)"
    for root, dirs, files in os.walk(int_path):
        for filename in files:  # 遍历所有文件
            #print(filename)
            name=filename.split("_")[1]
            if name == flag:
                shutil.copy(os.path.join(root, filename), os.path.join("F:\\TB肺结核\\database\\train\\pne\\", name))
            else:
                #os.mkdir(r"F:\\TB肺结核\\database\\train\\pne\\" + name)
                flag=name
                print(name)

 

 


ホワイトCV:いいえ公共のCV(コンピュータビジョン)、AI(人工知能)技術関連分野、C ++の周りの記事の主な内容、Pythonはプログラミング技術、機械学習(ML)を集中するように設計、など(DL)、OpenCVの画像処理を、学習の深さ技術、技術的なポイント、勉強や仕事レコードの一般的な操作の深さを探る、問題は仕事のアシスタントにあなたを学びます。唯一の技術、専門的な知識の共有プラットフォームのCVフィールドに関わります。
----------------
 

 

公開された74元の記事 ウォン称賛64 ビュー130 000 +

おすすめ

転載: blog.csdn.net/wsLJQian/article/details/101012829
おすすめ