高校倫理1440106 views
世界の国564520 views
Computer368106 views
高校生物551766 views
中学数学623755 views
英語613639 views
高校日本史190571 views
雑学1473612 views
小学理科719870 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 で絶対パスと相対パスを変換する

相対パスと絶対パスを相互に変換するには os.path.abspath()pathlib.Path.resolve() を使う。

相対パスを絶対パスに変換する

os.path.abspath() を使うと、相対パスを絶対パスに変換できる。

import os

relative = 'data/file.txt'
absolute = os.path.abspath(relative)

print(absolute)  # /home/user/project/data/file.txt

現在の作業ディレクトリを基準に絶対パスが生成される。ファイルが実際に存在するかどうかは確認されない。

pathlib を使う方法

pathlib では resolve() メソッドで絶対パスに変換できる。

from pathlib import Path

relative = Path('data/file.txt')
absolute = relative.resolve()

print(absolute)  # /home/user/project/data/file.txt

resolve() はシンボリックリンクも解決する。Python 3.6 以降では、ファイルが存在しなくてもエラーにならない。

絶対パスを相対パスに変換する

os.path.relpath() を使うと、絶対パスを相対パスに変換できる。

import os

absolute = '/home/user/project/data/file.txt'
relative = os.path.relpath(absolute)

print(relative)  # data/file.txt(現在のディレクトリが /home/user/project の場合)

第2引数で基準となるディレクトリを指定できる。

import os

absolute = '/home/user/project/data/file.txt'
relative = os.path.relpath(absolute, '/home/user')

print(relative)  # project/data/file.txt

pathlib で相対パスに変換する

pathlib では relative_to() メソッドを使う。

from pathlib import Path

absolute = Path('/home/user/project/data/file.txt')
base = Path('/home/user/project')

relative = absolute.relative_to(base)
print(relative)  # data/file.txt

relative_to() は、基準パスがターゲットパスの親でない場合に ValueError を発生させる。

絶対パスかどうかを判定する

パスが絶対パスかどうかを判定するには os.path.isabs() または Path.is_absolute() を使う。

import os
from pathlib import Path

# os.path
print(os.path.isabs('/home/user'))  # True
print(os.path.isabs('data/file'))   # False

# pathlib
print(Path('/home/user').is_absolute())  # True
print(Path('data/file').is_absolute())   # False