[ํŒŒ์ด์ฌ] ์—ฌ๋Ÿฌ ํŒŒ์ผ ์ด๋ฆ„ ํ•œ๋ฒˆ์— ๋ณ€๊ฒฝํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ ๋งŒ๋“ค๊ธฐ(feat. os.rename)

2023. 7. 28. 19:30ยท๐Ÿ“œ Language/[python]

๊ณ„๊ธฐ

YOLOํ•™์Šต์„ ์œ„ํ•ด ์ด๋ฏธ์ง€ ๋ผ๋ฒจ๋ง์„ ํ•˜๋‹ˆ, ์ด๋ฏธ์ง€ ์ˆ˜๋ฐฑ ์žฅ์˜ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•ด์•ผ ๋˜๋Š” ์ผ์ด ์ƒ๊ฒผ๋‹ค.

ํ•˜๋‚˜ํ•˜๋‚˜ ๋ณ€๊ฒฝํ•˜๋ฉด ๋˜์ง€๋งŒ ๋„ˆ๋ฌด ๊ท€์ฐฎ๊ณ  ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค.

ํŒŒ์ด์ฌ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์„ ๊ฑฐ ๊ฐ™์•„, ๊ฐ„๋‹จํ•˜๊ฒŒ ์ฝ”๋“œ๋ฅผ ์งœ๋ดค๋‹ค.

ํ”„๋กœ๊ทธ๋žจ์ด๋ผ ํ•˜๊ธฐ์—” ์ฝ”๋“œ๊ฐ€ ๋„ˆ๋ฌด ์งง๊ธด ํ•˜์ง€๋งŒ, ๋ญ ๋‚ด๊ฐ€ ํ•„์š”์— ์˜ํ•ด ๋งŒ๋“  ๊ฑฐ๋‹ˆ ์œ ์˜๋ฏธํ•˜์ง€ ์•Š์„๊นŒ?๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

 

์ฝ”๋“œ

import os

#๊ธฐ์กด ์‚ฌ์ง„ ๋ฐฑ์—… ํ•„์ˆ˜!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
#๊ธฐ์กด์— ์žˆ๋Š” ์‚ฌ์ง„๋“ค์„ ์‚ญ์ œ๋จ

#๊ธฐ์กด ํŒŒ์ผ ๊ฒฝ๋กœ
folder_path = 'C:\\Users'

#์ƒˆ๋กœ ์ €์žฅ ๊ฒฝ๋กœ (์ •ํ™•ํžˆ ๋งž์•„์•ผ ํ•จ)
dst_path = 'C:\\Users'

#ํด๋”์•ˆ์—์žˆ๋Š” ํŒŒ์ผ๋“ค ์ด๋ฆ„ ๋ฆฌ์ŠคํŠธ๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ
file_names = os.listdir(folder_path)

#ํ™•์ธ
print(file_names)

#์ด๋ฏธ์ง€ ๋„˜๋ฒ„๋ง
numbering = 1

for file in file_names:
    f_name, f_format = file.split(sep = '.') #ํŒŒ์ผ ์ด๋ฆ„, ํŒŒ์ผ ํ™•์žฅ์ž split

    if f_format == 'jpg': #์‚ฌ์ง„์ด๋ฉด
        if f_name + '.txt' in file_names: #๋ผ๋ฒจ๋ง์ด ๋œ ์‚ฌ์ง„์ด๋ฉด
            #print(f_name, f_format)
            src_jpg = os.path.join(folder_path, f_name + '.jpg')
            src_txt = os.path.join(folder_path, f_name + '.txt')

            rename_jpg = '3_' + '1_' + str(numbering) + '.jpg' # (ํŒ€์›์ˆœ์„œ)_(์˜์ƒ์ˆœ์„œ)_(์ด๋ฏธ์ง€ ์ˆœ์„œ) + .jpg
            rename_txt = '3_' + '1_' + str(numbering) + '.txt'

            numbering += 1 #๋„˜๋ฒ„๋ง ๋‹ค์Œ
            print(rename_jpg)

            dst_jpg = os.path.join(dst_path, rename_jpg)
            dst_txt = os.path.join(dst_path, rename_txt)

            os.rename(src_jpg, dst_jpg)
            os.rename(src_txt, dst_txt)

์„ค๋ช…

์ผ๋‹จ ์ฒ˜์Œ๋ถ€ํ„ฐ ์–˜๊ธฐํ•ด ๋ณด๋ฉด,

YOLO๋กœ ํ•™์Šตํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ด๋ฏธ์ง€๋ฅผ ์˜์ƒ์—์„œ ํ”„๋ ˆ์ž„๋‹จ์œ„๋กœ ์ถ”์ถœํ–ˆ๋‹ค.

 

Streamlit

 

www.viconvert.kro.kr:8501

์ถ”์ถœํ•˜๋ฉด 1.jpg, 2.jpg, 3.jpg... ์ด๋Ÿฐ ์‹์œผ๋กœ ์ƒ์„ฑ๋œ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  labelImg๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ด๋ฏธ์ง€ ๋ผ๋ฒจ๋ง์„ ์ง„ํ–‰ํ–ˆ๋‹ค. ๋ผ๋ฒจ๋ง์„ ํ•˜๋ฉด 1.txt, 2.txt ์ด๋Ÿฐ ํ˜•์‹์œผ๋กœ ๋ผ๋ฒจ๋ง ์ •๋ณด๊ฐ€ txtํŒŒ์ผ์— ์ €์žฅ๋œ๋‹ค.

txtํŒŒ์ผ์—๋Š” ๋ผ๋ฒจ๋ง ํด๋ž˜์Šค, ๋ฐ•์Šค์˜ 4 ๊ผญ์ง“์  ์ขŒํ‘œ๊ฐ€ ์ €์žฅ๋œ๋‹ค.

์ด์ œ jpg์™€ txt๋ฅผ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ํ˜•์‹์œผ๋กœ ๋ฐ”๊พธ๊ณ  ์‹ถ์–ด ํŒŒ์ด์ฌ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ๋‹ค.

 

#๊ธฐ์กด ํŒŒ์ผ ๊ฒฝ๋กœ
folder_path = 'C:\\Users'

#์ƒˆ๋กœ ์ €์žฅ ๊ฒฝ๋กœ (์ •ํ™•ํžˆ ๋งž์•„์•ผ ํ•จ)
dst_path = 'C:\\Users'

#ํด๋”์•ˆ์—์žˆ๋Š” ํŒŒ์ผ๋“ค ์ด๋ฆ„ ๋ฆฌ์ŠคํŠธ๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ
file_names = os.listdir(folder_path)

๋จผ์ € ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๊ธฐ์กด์— ์žˆ๋Š” ํŒŒ์ผ๋“ค์ด ์‚ฌ๋ผ์ง€๋‹ˆ๊นŒ ๋ฐฑ์—… ํ•„์ˆ˜. 

 

๋ฐ”๊พธ๊ณ  ์‹ถ์€ ์‚ฌ์ง„๋“ค์ด ์žˆ๋Š” ํด๋”๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋ฐ”๊ฟ”์„œ ์ €์žฅํ•  ๊ฒฝ๋กœ๋„ ์ง€์ •ํ•ด ์ค€๋‹ค. ์ œ๋Œ€๋กœ ์•ˆ ํ•˜๋ฉด ์ €์žฅ๊ฒฝ๋กœ๊ฐ€ ๊ผฌ์ธ๋‹ค. 

 

os.listdir์„ ํ†ตํ•ด ํด๋”์— ์žˆ๋Š” ํŒŒ์ผ๋“ค์˜ ์ด๋ฆ„์„ ๋ฆฌ์ŠคํŠธ๋กœ ๊ฐ€์ ธ์˜จ๋‹ค.

[1.jpg, 1.txt, 10.jpg, 10.txt, 100.jpg,...]

์ด๋Ÿฐ ์‹์œผ๋กœ ์ˆซ์ž ์ˆœ์„œ๊ฐ€ ์•ˆ ๋งž๊ธด ํ•˜๋Š”๋ฐ ๋‚˜๋Š” ์ด๋ฏธ์ง€ ์ˆœ์„œ๋Š” ๋ณ„๋กœ ์ค‘์š”ํ•˜์ง€ ์•Š์•„ ๊ทธ๋ƒฅ ์ง„ํ–‰ํ–ˆ๋‹ค.

์ˆœ์„œ๋ฅผ ๋งž์ถ”๋ ค๋ฉด ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€๋กœ ์ž‘์„ฑํ•ด์„œํ•˜๋ฉด ๋  ๊ฑฐ ๊ฐ™๋‹ค.

 

#์ด๋ฏธ์ง€ ๋„˜๋ฒ„๋ง
numbering = 1

for file in file_names:
    f_name, f_format = file.split(sep = '.') #ํŒŒ์ผ ์ด๋ฆ„, ํŒŒ์ผ ํ™•์žฅ์ž split

    if f_format == 'jpg': #์‚ฌ์ง„์ด๋ฉด
        if f_name + '.txt' in file_names: #๋ผ๋ฒจ๋ง์ด ๋œ ์‚ฌ์ง„์ด๋ฉด
            #print(f_name, f_format)
            src_jpg = os.path.join(folder_path, f_name + '.jpg')
            src_txt = os.path.join(folder_path, f_name + '.txt')

            rename_jpg = '3_' + '1_' + str(numbering) + '.jpg' # (ํŒ€์›์ˆœ์„œ)_(์˜์ƒ์ˆœ์„œ)_(์ด๋ฏธ์ง€ ์ˆœ์„œ) + .jpg
            rename_txt = '3_' + '1_' + str(numbering) + '.txt'

            numbering += 1 #๋„˜๋ฒ„๋ง ๋‹ค์Œ
            print(rename_jpg)

            dst_jpg = os.path.join(dst_path, rename_jpg)
            dst_txt = os.path.join(dst_path, rename_txt)

            os.rename(src_jpg, dst_jpg)
            os.rename(src_txt, dst_txt)

for์œผ๋กœ ํด๋”์— ์žˆ๋Š” ๊ฐ ํŒŒ์ผ์ด๋ฆ„์„ ๊ฐ€์ ธ์˜จ๋‹ค. ํŒŒ์ผ์€ xxx.xxxํ˜•์‹์ด๋‹ˆ๊นŒ '.'์„ ๊ธฐ์ค€์œผ๋กœ split ํ•ด์ค€๋‹ค.

 

ํด๋”์—๋Š” ๋ผ๋ฒจ๋ง ํ•œ ์‚ฌ์ง„์ด ์žˆ๊ณ , ๋ผ๋ฒจ๋ง ์•ˆ ํ•œ ์‚ฌ์ง„์ด ์žˆ๋‹ค.

๋ผ๋ฒจ๋ง์„ ํ•˜๋ฉด ์‚ฌ์ง„ ํŒŒ์ผ ์ด๋ฆ„๊ณผ ๊ฐ™์€ .txtํŒŒ์ผ์ด ์ƒ์„ฑ๋˜๋‹ˆ๊นŒ, ์ด๋ฅผ ์ด์šฉํ•ด์„œ ๋ผ๋ฒจ๋ง ํ•œ ์‚ฌ์ง„๋“ค์„ ๋ถ„๋ฅ˜ํ•ด ์ค€๋‹ค.

 

ํ™•์ธ ๋์œผ๋ฉด, ๊ธฐ์กด ํŒŒ์ผ๋“ค์˜ ๊ฒฝ๋กœ(src_)๋ฅผ os.path.join์œผ๋กœ ๊ฐ€์ ธ์˜จ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ๋‚ด๊ฐ€ ๋ฐ”๊พธ๊ณ  ์‹ถ์€ ์ด๋ฆ„(rename_)์œผ๋กœ ๋งŒ๋“ค๊ณ , ์ด๊ฑธ os.path.join์œผ๋กœ ์ƒˆ๋กœ์šด ์ €์žฅ ๊ฒฝ๋กœ(dst)๋ฅผ ๋งŒ๋“ค์–ด์ค€๋‹ค.

 

์ด์ œ os.rename์œผ๋กœ ์ด๋ฆ„ ๋ณ€๊ฒฝํ•ด ์ฃผ๋ฉด ๋.

 

๊ฒฐ๊ณผ

 

ํ›„๊ธฐ

์•„์ด๋””์–ด๋„ ๊ฐ„๋‹จํ•˜๊ณ  ๊ตฌํ˜„๋„ ์‰ฝ๋‹ค. ๊ทธ๋ž˜๋„ ๋‚˜๋ฆ„ ์ž๋™ํ™”๋‹ˆ๊นŒ ์œ ์˜๋ฏธํ•˜์ง€ ์•Š์„๊นŒ ์ƒ๊ฐํ•œ๋‹ค.

๋ฉ€ํ‹ฐ๋ฒ„์Šค์˜ ๋‚˜๋Š” ํŒŒ์ผ ํ•˜๋‚˜ํ•˜๋‚˜ ํด๋ฆญํ•˜๋ฉฐ ํŒŒ์ผ๋ช…์„ ๋ฐ”๊พธ๊ณ  ์žˆ์„๊นŒ?

 

์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'๐Ÿ“œ Language > [python]' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[ํŒŒ์ด์ฌ] ๋ฐ˜๋ณต๋ฌธ์—์„œ ์ธ๋ฑ์Šค์™€ ์š”์†Œ ๋™์‹œ ์ˆœํšŒ - enumerate  (1) 2023.08.29
[ํŒŒ์ด์ฌ] ์ฝฐ์ธ(Quine) ํ”„๋กœ๊ทธ๋žจ  (0) 2023.07.20
[ํŒŒ์ด์ฌ] dis๋ชจ๋“ˆ๋กœ ๋ฐ”์ดํŠธ ์ฝ”๋“œ ํ™•์ธ - dis  (0) 2022.08.08
[ํŒŒ์ด์ฌ] ํŒŒ์ด์ฌ ์ฝ”๋“œ ์‹คํ–‰ ์ธก์ • - time  (0) 2022.08.05
[ํŒŒ์ด์ฌ] if __name__ == "__main__"  (0) 2022.08.03
'๐Ÿ“œ Language/[python]' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [ํŒŒ์ด์ฌ] ๋ฐ˜๋ณต๋ฌธ์—์„œ ์ธ๋ฑ์Šค์™€ ์š”์†Œ ๋™์‹œ ์ˆœํšŒ - enumerate
  • [ํŒŒ์ด์ฌ] ์ฝฐ์ธ(Quine) ํ”„๋กœ๊ทธ๋žจ
  • [ํŒŒ์ด์ฌ] dis๋ชจ๋“ˆ๋กœ ๋ฐ”์ดํŠธ ์ฝ”๋“œ ํ™•์ธ - dis
  • [ํŒŒ์ด์ฌ] ํŒŒ์ด์ฌ ์ฝ”๋“œ ์‹คํ–‰ ์ธก์ • - time
์ œ๋ด‰์•„
์ œ๋ด‰์•„
  • ์ œ๋ด‰์•„
    Overthinking
    ์ œ๋ด‰์•„
    fake it till you make it.
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (104)
      • ๐Ÿงฉ Problem Solving (83)
        • [๋ฐฑ์ค€] (74)
        • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] (7)
        • [SW Expert Academy] (1)
        • [์•Œ๊ณ ๋ฆฌ์ฆ˜ for PS] (1)
      • ๐Ÿ“ฆ Data Structure (2)
      • ๐Ÿ“œ Language (14)
        • [python] (14)
      • ๐Ÿ–ค Git (1)
      • ๐ŸŒ† ์ผ์ƒ (2)
        • ๐Ÿ’ฌ ๋ฒฝ๋ณด๊ณ  ๋งํ•˜๊ธฐ (2)
      • ๐Ÿ—„๏ธ ๊ธฐํƒ€ (2)
      • ๐Ÿ”ต css (0)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    DFS
    ๋ฐ๋ธŒ์ฝ”์Šค
    imos
    DP
    ๋ˆ„์ ํ•ฉ
    ๊ตฌํ˜„
    ๋‹ค์ต์ŠคํŠธ๋ผ
    ๋ฐฑ์ค€
    ์žฌ๊ท€
    ํŒŒ์ด์ฌ
    boj
    ๊ทธ๋ฆฌ๋””
    ํ”Œ๋กœ์ด๋“œ์›Œ์…œ
    ํŒฐ๋ฆฐ๋“œ๋กฌ
    ์œ„์ƒ์ •๋ ฌ
    ์Šคํƒ
    Python
    Bruteforce
    slicing
    SWEA
    ๋ƒ…์ƒ‰
    ํˆฌํฌ์ธํ„ฐ
    ๋ถ„ํ•  ์ •๋ณต
    ๋ถ€๋ถ„ํ•ฉ
    ํ”Œ๋กœ์ด๋“œ ์™€์ƒฌ
    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
    ๋ธŒ๋ฃจํŠธํฌ์Šค
    ๋ฐฑํŠธ๋ž˜ํ‚น
    BFS
    ์ •์ฒ˜๊ธฐ
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
์ œ๋ด‰์•„
[ํŒŒ์ด์ฌ] ์—ฌ๋Ÿฌ ํŒŒ์ผ ์ด๋ฆ„ ํ•œ๋ฒˆ์— ๋ณ€๊ฒฝํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ ๋งŒ๋“ค๊ธฐ(feat. os.rename)
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”