小学理科719870 views
MathPython497343 views
小学社会310485 views
高校国語788336 views
教育149510 views
Computer368106 views
中学数学623755 views
雑学1473612 views
世界の国564520 views
ヒストリア290598 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 でテンポラリファイルを作成する(tempfile)

一時的なファイルやディレクトリを作成するには tempfile モジュールを使う。プログラム終了時やコンテキスト終了時に自動的に削除されるため、後処理を気にする必要がない。

一時ファイルを作成する

tempfile.NamedTemporaryFile() を使うと、名前付きの一時ファイルを作成できる。

import tempfile

with tempfile.NamedTemporaryFile(mode='w', delete=True) as f:
    f.write('一時的なデータ')
    print(f.name)  # /tmp/tmpxxxxxx のようなパス
# with を抜けると自動削除される

delete=True(デフォルト)の場合、ファイルを閉じると自動的に削除される。delete=False にすると、手動で削除するまでファイルが残る。

一時ディレクトリを作成する

tempfile.TemporaryDirectory() を使うと一時ディレクトリを作成できる。

import tempfile

with tempfile.TemporaryDirectory() as tmpdir:
    print(tmpdir)  # /tmp/tmpxxxxxx
    # このディレクトリ内で作業
# with を抜けると中身ごと自動削除される

一時ディレクトリ内に複数のファイルを作成して処理する場合に便利だ。

一時ファイルのパスだけを取得する

ファイルを開かずにユニークな一時ファイル名だけが欲しい場合は tempfile.mkstemp() を使う。

import tempfile
import os

fd, path = tempfile.mkstemp(suffix='.txt')
print(path)  # /tmp/tmpxxxxxx.txt

# ファイルディスクリプタを使って書き込み
os.write(fd, b'data')
os.close(fd)

# 使い終わったら手動で削除
os.remove(path)

mkstemp() は自動削除されないため、手動で削除する必要がある。

一時ファイルの保存場所を指定する

デフォルトではシステムの一時ディレクトリ(/tmp など)に作成されるが、dir 引数で保存場所を指定できる。

import tempfile

with tempfile.NamedTemporaryFile(dir='./cache') as f:
    print(f.name)  # ./cache/tmpxxxxxx

suffix と prefix を指定する

ファイル名にサフィックス(拡張子)やプレフィックスを付けることもできる。

import tempfile

with tempfile.NamedTemporaryFile(suffix='.csv', prefix='data_') as f:
    print(f.name)  # /tmp/data_xxxxxx.csv