2016-09-26 58 views
4

假设我在/home/ashraful/test.txt上有一个文件。只是我想打开文件。 现在我的问题是:哪一个是关于python格式化字符串的好习惯?

哪一个是好的做法?

解决方案1:

dir = "/home/ashraful/" 
fp = open("{0}{1}".format(dir, 'test.txt'), 'r') 

解决方案2:

dir = "/home/ashraful/" 
fp = open(dir + 'test.txt', 'r') 

两个办法,我可以打开文件。

谢谢:)

+0

当谈到在Python中整合字符串时,我想说的是更具可读性,这是Python的一个原则。 http://docs.python-guide.org/en/latest/writing/style/在这种情况下,如果没有这些更好的选择,它将是第二个。 –

回答

14

而不将列使用os.path.joinos.path.expanduser生成路径并打开文件。 (假设你想在你的home目录打开文件)

with open(os.path.join(os.path.expanduser('~'), 'test.txt')) as fp: 
    # do your stuff with file 
+0

我刚刚打完这个。也许你可以包含一行示例代码,使其更加完整? – SuperSaiyan

+0

如果您打开的文件与打开它的脚本需要在同一个目录中,那么open('test.txt')是最好的选择。有时候,事情只是在我的主目录中,因为那是我开始研究它们的地方,并且它们移动了...... – cco

+0

非常感谢。现在它是有道理的。 –

2

我认为最好的办法是给我们os.path.join()这里

import os.path 

#… 
dir = '/home/ashraful/' 
fp = open(os.path.join(dir, 'test.txt'), 'r') 
4

如果你的目标是打开文件/目录,正如其他人所提到的那样,您应该使用os.path.join()方法。然而,如果你想在Python中格式化字符串 - 就像你的问题标题所建议的那样 - 那么你的第一种方法应该是首选。若要从PEP 310引用:

这PEP提出了一种新系统,内置的字符串格式化 操作,旨在为现有的“%”的字符串格式化 运营商的替代品。