ファイル操作

ローカルフォルダのファイル名一覧をリストで取得

import os

# ファイルを読み込むディレクトリ
dir = 'local'

# 読み込みディレクトリに存在するファイルをリスト化
files = os.listdir(dir)
print(files)

ファイルの存在を確認

import os
file = 'file.csv'

if os.path.exists(file) == True:
    print('file exists')

ファイルの読み込み

ファイルを1行ずつ読み込み

file = 'input.txt'

with open(file) as f:
    text_line = f.read()

print(text_line)
# aaa
# bbb
# ccc

print(type(text_line))
# <class 'str'>

ファイルを1行毎にリスト化

file = 'input.txt'

with open(file) as f:
    text_line_list = [t.strip() for t in f.readlines()]

print(text_line_list)
# ['aaa', 'bbb', 'ccc']

不可視ファイルの読み込みをスキップ

for file in files:
    if file == '.DS_Store' or file == '.localized':
        continue

特定の文字列を含むファイルを抽出

l = []

# ファイルを読み込むディレクトリ
dir = 'tmp'

# 読み込みディレクトリに存在するファイルをリスト化
files = os.listdir(dir)
files.sort()

for file in files:
    if file == '.DS_Store':
        continue
    if file == '.localized':
        continue

    file = 'tmp/' + file

    with open(file) as f:
        list_text = [t.strip() for t in f.readlines()]

    for text in list_text:
        if 'HTML / CSS' in text:
            l.append(file)

print(l)

ファイルの文字列を置換

l = ['aaa', 'aaaaa']

# ファイルを読み込むディレクトリ
dir = 'tmp'

# 読み込みディレクトリに存在するファイルをリスト化
files = os.listdir(dir)

for file in files:
    if file == '.DS_Store':
        continue
    if file == '.localized':
        continue

    file = dir + '/' + file

    with open(file) as f:
        text_line = f.read()

    # 文字列置換
    text_line = text_line.replace(l[0], l[1])

    # 同じファイル名で保存
    with open(file, mode='w') as f:
        f.write(text_line)

ファイル・フォルダの複製コピー

ファイルを同じ階層に別名でコピー

import shutil
shutil.copy('sample.csv', 'sample_copy.csv')

ファイルを他のフォルダに同名でコピー

import shutil
shutil.copy('sample.csv', 'folder/sample.csv')

フォルダを同じ階層に別名でコピー

import shutil
shutil.copytree('folder', 'folder_backup')