我需要将文件路径名传递给一个模块。如何从目录名、基本文件名和文件格式字符串构建文件路径?
该目录在调用时可能存在,也可能不存在。
例如:
dir_name='/home/me/dev/my_reports'
base_filename='daily_report'
format = 'pdf'
我需要创建一个字符串'/home/me/dev/my_reports/daily_report.pdf'
手动连接这些片段似乎不是一个好方法。我尝试了os.path.join:
join(dir_name,base_filename,format)
但是它给出了
/home/me/dev/my_reports/daily_report/pdf
只需使用os.path.join将您的路径与文件名和扩展名连接起来。使用系统。Argv在执行脚本时访问传递给脚本的参数:
#!/usr/bin/env python3
# coding: utf-8
# import netCDF4 as nc
import numpy as np
import numpy.ma as ma
import csv as csv
import os.path
import sys
basedir = '/data/reu_data/soil_moisture/'
suffix = 'nc'
def read_fid(filename):
fid = nc.MFDataset(filename,'r')
fid.close()
return fid
def read_var(file, varname):
fid = nc.Dataset(file, 'r')
out = fid.variables[varname][:]
fid.close()
return out
if __name__ == '__main__':
if len(sys.argv) < 2:
print('Please specify a year')
else:
filename = os.path.join(basedir, '.'.join((sys.argv[1], suffix)))
time = read_var(ncf, 'time')
lat = read_var(ncf, 'lat')
lon = read_var(ncf, 'lon')
soil = read_var(ncf, 'soilw')
简单地像这样运行脚本:
# on windows-based systems
python script.py year
# on unix-based systems
./script.py year
为了更好地理解,添加以下代码:
import os
def createfile(name, location, extension):
print(name, extension, location)
#starting creating a file with some dummy contents
path = os.path.join(location, name + '.' + extension)
f = open(path, "a")
f.write("Your contents!! or whatever you want to put inside this file.")
f.close()
print("File creation is successful!!")
def readfile(name, location, extension):
#open and read the file after the appending:
path = os.path.join(location, name + '.' + extension)
f = open(path, "r")
print(f.read())
#pass the parameters here
createfile('test','./','txt')
readfile('test','./','txt')