在osPython 的模块中,有没有办法找到目录是否存在,例如:
>>> os.direxists(os.path.join(os.getcwd()), 'new_folder')) # in pseudocode
True/False
Run Code Online (Sandbox Code Playgroud) 有没有办法mkdir -p在Python中获得类似于shell的功能.我正在寻找除系统调用之外的解决方案.我确信代码少于20行,我想知道是否有人写过它?
可能重复:
python中的mkdir -p功能
说我想制作一个文件:
filename = "/foo/bar/baz.txt"
with open(filename, "w") as f:
f.write("FOOBAR")
Run Code Online (Sandbox Code Playgroud)
这给了一个IOError,因为/foo/bar不存在.
什么是自动生成这些目录的最pythonic方式?难道真的要我明确调用os.path.exists并os.mkdir在每个单独的一个(即/富,则/富/条)?
我想将程序的输出信息放到一个文件夹中.如果给定文件夹不存在,则程序应该创建一个新文件夹,文件夹名称与程序中给出的一样.这可能吗?如果是,请告诉我如何.
假设我已经给出了文件夹路径,"C:\Program Files\alex"并且alex文件夹不存在则程序应该创建alex文件夹,并且应该将输出信息放在alex文件夹中.
是否有Python方法以递归方式创建目录?我有这条道路:
/home/dail/
Run Code Online (Sandbox Code Playgroud)
我想创造
/home/dail/first/second/third
Run Code Online (Sandbox Code Playgroud)
我可以递归地执行此操作,还是必须在另一个目录之后创建一个目录?
同样的事情:
我可以递归地执行chmod和chown而不为每个文件/目录分配权限吗?
我需要一种方法来确定在Linux,Windows和OS X上使用python在磁盘卷上剩余的空间.我正在解析各种系统调用的输出(df,dir)来实现这一点 - 有更好的方法吗?
例如,在一个简单的目录创建操作中,我可以像这样制作一个OSError:
(Ubuntu Linux)
>>> import os
>>> os.mkdir('foo')
>>> os.mkdir('foo')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OSError: [Errno 17] File exists: 'foo'
Run Code Online (Sandbox Code Playgroud)
现在我可以像这样抓住这个错误:
>>> import os
>>> os.mkdir('foo')
>>> try:
... os.mkdir('foo')
... except OSError, e:
... print e.args
...
(17, 'File exists')
Run Code Online (Sandbox Code Playgroud)
是否有一种跨平台的方式,我可以知道17或"文件存在"将始终意味着相同的事情,以便我可以根据情况采取不同的行动?
(这是在另一个问题中出现的.)
我在集群系统上有几个并行运行的线程.每个python线程输出到一个目录mydir.每个脚本在输出检查之前是否存在mydir,如果不存在则创建它:
if not os.path.isdir(mydir):
os.makedirs(mydir)
Run Code Online (Sandbox Code Playgroud)
但这会产生错误:
os.makedirs(self.log_dir)
File "/usr/lib/python2.6/os.py", line 157, in makedirs
mkdir(name,mode)
OSError: [Errno 17] File exists
Run Code Online (Sandbox Code Playgroud)
我怀疑这可能是由于竞争条件,一个工作在另一个工作之前创建了dir.这可能吗?如果是这样,如何避免这种错误?
我不确定这是一个竞争条件,所以想知道Python中的其他问题是否会导致这个奇怪的错误.
我正在尝试使用Python创建和写入文本文件.我搜索过,无法找到此错误的解决方案/原因.
这是不起作用的代码:
afile = 'D:\\temp\\test.txt'
outFile = open(afile, 'w' )
outFile.write('Test.')
outFile.close()
# Error: 2
# Traceback (most recent call last):
# File "<maya console>", line 1, in <module>
# IOError: [Errno 2] No such file or directory: 'D:\\temp\\test.txt' #
Run Code Online (Sandbox Code Playgroud)
我找到的大多数答案都与路径中的斜线有关,所以......
I tried 'D:/temp/test.txt' and got an error.
I tried r'D:\temp\test.txt' and got an error.
Run Code Online (Sandbox Code Playgroud)
当我尝试在D的根目录创建文件时:/我已成功.
'D:/test.txt' works.
'D:\\test.txt' works.
r'D:\test.txt' works.
Run Code Online (Sandbox Code Playgroud)
在尝试创建文件时,似乎无法创建我想要的目录路径.在Windows上使用Python在特定路径上创建文件的正确方法是什么(7)?我误解open()可以做什么?如果它们不存在,它是否会创建目录,或者在"写入"模式下使用open()创建文件之前是否需要显式创建目录路径?
我想编写一个使用Python日志记录的Python类.这个Python类将负责在init函数中创建具有给定名称的文件.
我想在两个或更多类中创建上述类的对象,并期望生成两个或文件.
我尝试编写这个类,但我无法创建多个文件.
任何人都可以指导我如何做到这一点?
我创建了以下类:
class Logger:
def __init__(self, log_filename = "test.log"):
if not os.path.exists("LogFiles"):
os.makedirs("LogFiles")
self.Logger = logging.getLogger("main")
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s : %(message)s',
filename= log_filename,
filemode='w') # change filemode to 'w' to overwrite file on each run
consoleHandler = logging.StreamHandler()
consoleHandler.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(message)s')
consoleHandler.setFormatter(formatter)
logging.getLogger('').addHandler(consoleHandler) # Add to the root logger
self.Logger.info("Starting new logging sessions")
def writeToFile(self, line):
if self.Logger.propagate == True:
self.Logger.debug(line)
def closeFile(self):
if self.Logger.propagate == True:
self.Logger.propagate = False
Run Code Online (Sandbox Code Playgroud)