高校物理160203 views
りんご209490 views
中学英語811710 views
中学理科1630641 views
LaTeX962153 views
高校化学2924392 views
ヒストリア290598 views
高校倫理1440106 views
中学社会668760 views
世界の国564520 views
Help
Tools
NewsSpreadsheetCalendarSlidesTier ListPen ToolIllustrationCrayonPixel ArtASCII ArtPerspectiveEndless StairsGraphMind MapER DiagramFamily TreeMemeCurved TextImage EditorMosaicRetro FilterPencil SketchOCR/HighlighterMakeup EditorFaviconVideo TrimmerScrolling VideoVideo TitleColor PickerColor ExtractorBonfireFireworksWater RippleWater SplashBreaking GlassWood GrainMarble TextureCSS ButtonIcon MakerBar ChartGrouped Bar ChartStacked Bar ChartPie ChartLine ChartArea ChartStacked Area ChartScatter Plot3D Bar Chart3D Pie ChartBar Chart RaceBubble ChartPopulation PyramidPictogramEarningsCandlestick ChartInvestment RiskMortgage SimulatorCalculatorMatrix CalculatorFunction GraphPolynomial ExpansionVenn DiagramField VisualizerRubik's Cube Group TheoryTraveling SalesmanVoronoi and DelaunayFractalColumn ArithmeticDraw Math FiguresArithmetic AnimationArithmetic Word ProblemsCounting with Tree DiagramsCube NetsCross SectionsMotion PathMechanicsWavesLight and LensesThermodynamicsHow Semiconductors WorkMolecular StructuresAtomic OrbitalsElectrochemical CellsChemical EquilibriumCrystal LatticesBuffer pHComplex IonsDNA Double HelixCell DivisionMembrane ChannelsNerve ImpulseRock ClassificationWeatherConstellationsSolar and Lunar Eclipses3D ModelingFloor PlanSeismic StructuresIntersection TurnMaglevCooking AnimationOrigamiLive Viewer CountGeoJSON MapRailway MapPopulation MapCrime MapLand Price MapSchool MapShrine and Castle MapHouse of Representatives MapWord MapSolitaireReversiHakoiri MusumeChessHamburgerRippleSlide Puzzle MakerNeon PinballNovel MakerJapanese Typing PracticePiano Score EditorMusic Theory

English

Pythonのファイル入出力(読み込み、書き込み、csv、拡張子や更新日時の取得)

ファイルの読みこみ(tryを使う方法)

ファイルの読み込みはopen、read、closeをセットで行ないます。

  • ファイルを開く
  • ファイルのデータを取得する
  • ファイルを閉じる

プログラムのファイルがあるディレクトリにdata.txtがあり、それを読みとるプログラムを考えます。

data.txt

apple
grape
melon
peach

プログラム

file = open(‘data.txt’, ‘r’)
try:
data = file.read()
print(data)
finally:
file.close()

出力

apple
grape
melon
peach

openは第一引数をファイル名、第二引数をrとします。ファイル名は相対パスでも絶対パスでもかまいません。その後、例外処理(try)でファイルの中身を取得します。finallyでファイルを閉じます。

ファイルの読みこみ(withを使う方法)

data.txt

りんご
みかん
いちご
メロン
バナナ

プログラム

with open(‘data.txt’, ‘r’) as file:
data = file.read()
print(data)

出力

りんご
みかん
いちご
メロン
バナナ

try…catchの構文よりもwithを使うほうが安全で、ファイルを閉じる作業を書かずにすみます。

結果をリストにする

readlinesを使うと結果をリストで取得できます。

with open(‘data.txt’, ‘r’) as file:
data = file.readlines()
print(data)

出力

[‘りんご\n’, ‘みかん\n’, ‘いちご\n’, ‘メロン\n’, ‘バナナ’]

要素が改行コードを含んでいることに注意してください。この仕様があるため、結局はreadlinesよりもreadを使うほうがわかりやすい。

with open(‘data.txt’, ‘r’) as file:
data = file.read().splitlines()
print(data)

出力

[‘りんご’, ‘みかん’, ‘いちご’, ‘メロン’, ‘バナナ’]

splitlinesは改行で文字列を分割する関数です。

1行ずつ書きこむ

リストなどの配列をファイルに書きこむにはwritelinesという関数を使います。ファイルを開き、書きこみ、閉じるというステップはwriteと変わりません。

writelinesは「リストの要素を一行ずつ書きこむ」関数ではありません。要素ごとに改行を入れるプログラムはページの最後に紹介しています。

プログラムのファイルがあるディレクトリにdata.txtがあり、テキストに文字列を書きこむプログラムを考えます。

プログラム

list = [‘りんご’, ‘みかん’, ‘いちご’, ‘メロン’, ‘バナナ’]
file = open(‘data.txt’, ‘w’)
try:
file.writelines(list)
finally:
file.close()

data.txt

りんごみかんいちごメロンバナナ

openは第一引数をファイル名、第二引数をwとします。ファイル名は相対パスでも絶対パスでもかまいません。その後、例外処理(try)でファイルの中身を取得します。finallyでファイルを閉じます。

プログラムを実行するとファイルが上書きされます。最初のデータが消えて「りんごみかんいちごメロンバナナ」になります。openの第二引数にあるwが上書きを意味しています。

上書きでなく追記にしたいときはwをaとします。

「りんごみかんいちごメロンバナナ」を

りんご
みかん
いちご
メロン
バナナ

としたいときは次のようにします。

プログラム

list = [‘りんご’, ‘みかん’, ‘いちご’, ‘メロン’, ‘バナナ’]
file = open(‘data.txt’, ‘w’)
try:
file.write(“\n”.join(list))
finally:
file.close()

data.txt

りんご
みかん
いちご
メロン
バナナ

“\n”.join(list)はlistの要素を改行で結合した文字列です。

csvで読み込み

プログラムのファイルがあるディレクトリにdata.csvがあり、それを読みとるプログラムを考えます。

  • csvモジュールをインポートする
  • withでファイルを開く
  • readerでファイルを読む

data.csv

りんご,みかん
いちご,メロン

プログラム

import csv

data = []
with open(‘data.csv’, ‘r’) as file:
array = csv.reader(file)
for row in array:
data.append(row)
print(data)

出力

[[‘りんご’, ‘みかん’], [‘いちご’, ‘メロン’]]

csv.reader(file)のarrayには、csvファイルの中身が改行で区切られた配列のようなもの(リストではない特殊なオブジェクト)が入っています。arrayにある各要素は[‘りんご’,‘みかん’]といったリストです。

ファイルの拡張子を取得する

ファイルの拡張子はos.path.splitextで取得します。

import os.path

path = os.path.splitext(‘data.csv’)
print(path)

出力

(‘data’, ‘.csv’)

ファイル名と拡張子を別に取得するには

import os.path

name, ext = os.path.splitext(‘data.csv’)
print(name)
print(ext)

出力

data
.csv

とします。

ファイルの更新日時・時間をos.statで取得する

ファイルの更新時間はos.statで取得します。

import os

time = os.stat(‘data.csv’).st_mtime
print(time)

出力

1519216976.2002957

さらにdatetimeでわかりやすい日時に変換します。

import os
import datetime

time = os.stat(‘data.csv’).st_mtime
date = datetime.datetime.fromtimestamp(time)

print(time)
print(date)

出力

1519216976.2002957
2018-02-21 21:42:56.200296

Pythonのファイル入出力に関する解説記事をまとめました。ファイルを読み込む、ファイルを書き込む、csvファイルに書き込む…