在不改变目录的情况下写入Python中的新目录

Phi*_*sey 11 python directory io rss file

目前,我有以下代码......

file_name = content.split('=')[1].replace('"', '') #file, gotten previously
fileName = "/" + self.feed + "/" + self.address + "/" + file_name #add folders 
output = open(file_name, 'wb')
output.write(url.read())
output.close()
Run Code Online (Sandbox Code Playgroud)

我的目标是让python将文件(在file_name下)写入当前目录(IE中保存python脚本的IE)的"address"文件夹中的文件中.

我查看了os模块,但我不想更改当前目录,这些目录尚不存在.

KP.*_*KP. 10

首先,我不是100%自信我理解这个问题,所以让我说出我的假设:1)你想写一个目前还不存在的文件中的文件.2)路径是相对的(到当前目录).3)您不想更改当前目录.

因此,鉴于:检查这两个函数:os.makedirs和os.path.join.由于您要指定相对路径(相对于当前目录),因此您不希望添加初始"/".

dir_path = os.path.join(self.feed, self.address)  # will return 'feed/address'
os.makedirs(dir_path)                             # create directory [current_path]/feed/address
output = open(os.path.join(dir_path, file_name), 'wb')
Run Code Online (Sandbox Code Playgroud)

  • 如果 dir 存在,os.makdirs(dir_path,exist_ok=True) 将不会引发 OSError 异常。如果目录存在,默认值是引发 OSError。 (2认同)

ekh*_*oro 9

这将feed/address/file.txt在与当前脚本相同的目录中创建文件:

import os

file_name = 'file.txt'
script_dir = os.path.dirname(os.path.abspath(__file__))
dest_dir = os.path.join(script_dir, 'feed', 'address')
try:
    os.makedirs(dest_dir)
except OSError:
    pass # already exists
path = os.path.join(dest_dir, file_name)
with open(path, 'wb') as stream:
    stream.write('foo\n')
Run Code Online (Sandbox Code Playgroud)