我倾向于只对路径使用正斜杠('/'),而python也对它在窗口上也很满意.在os.path.join的描述中,它表示如果你想跨平台,这是正确的方法.但是当我使用它时,我会得到混合斜杠:
import os
a = 'c:/'
b = 'myFirstDirectory/'
c = 'mySecondDirectory'
d = 'myThirdDirectory'
e = 'myExecutable.exe'
print os.path.join(a, b, c, d, e)
# Result:
c:/myFirstDirectory/mySecondDirectory\myThirdDirectory\myExecutable.exe
Run Code Online (Sandbox Code Playgroud)
它是否正确?我应该在之后检查并纠正它还是有更好的方法?
谢谢
编辑:当我要求路径时,我也会得到混合斜杠
import sys
for item in sys.path:
print item
# Result:
C:\Program Files\Autodesk\Maya2013.5\bin
C:\Program Files\Autodesk\Maya2013.5\mentalray\scripts\AETemplates
C:\Program Files\Autodesk\Maya2013.5\Python
C:\Program Files\Autodesk\Maya2013.5\Python\lib\site-packages
C:\Program Files\Autodesk\Maya2013.5\bin\python26.zip\lib-tk
C:/Users/nookie/Documents/maya/2013.5-x64/prefs/scripts
C:/Users/nookie/Documents/maya/2013.5-x64/scripts
C:/Users/nookie/Documents/maya/scripts
C:\Program Files\Nuke7.0v4\lib\site-packages
C:\Program Files\Nuke7.0v4/plugins/modules
Run Code Online (Sandbox Code Playgroud) 我正在尝试安装setuptools包含console_scripts在Windows 7上的软件包.我正在尝试将我的值更改PYTHONUSERBASE为安装到带有--user标志的自定义目录中.如果我在值中使用反斜杠PYTHONUSERBASE,如
set PYTHONUSERBASE=C:\testing
Run Code Online (Sandbox Code Playgroud)
一切正常.但是,如果我使用正斜杠,就像在
set PYTHONUSERBASE=C:/testing
Run Code Online (Sandbox Code Playgroud)
软件包本身安装到正确的位置,但是console_scripts(并且只有console_scripts)安装到C:testing\Scripts.显然,当存在正斜杠时,setuptools将路径视为仅用于console_scripts路径的相对路径.在我的真实包中,我正在从配置文件中读取值,所以我真的不必处理规范化路径分隔符,因为它也需要在Linux上工作.为了测试,我有一个包含该结构的包
|-- setup.py
|-- foobar\
|---- __init__.py
|---- __main__.py
Run Code Online (Sandbox Code Playgroud)
中的代码__main__.py是
def main(): print('This is the main function')
Run Code Online (Sandbox Code Playgroud)
和setup.py看起来像:
from setuptools import setup
setup(
name='foobar',
version='1.0.0',
packages=['foobar'],
entry_points={
'console_scripts': [
'foobar=foobar.__main__:main',
],
},
)
Run Code Online (Sandbox Code Playgroud)
为什么要setuptools删除路径中的第一个正斜杠,我该如何解决?我认为这个问题与我的问题有关,但我认为它不能解决它:Windows上的Python os.path.join
我有一个Python ExcelDocument类,它提供了读取/写入/格式化Excel文件的基本方便方法,我在看似简单的Python代码中遇到了一个奇怪的错误.我有一个保存和saveAs方法:
def save(self):
''' Save the file '''
self.workbook.Save()
def saveAs(self, newFileName):
''' Save the file as a new file with a different name '''
self.workbook.SaveAs(newFileName)
Run Code Online (Sandbox Code Playgroud)
save方法工作正常,但是当我尝试调用saveAs方法时myExcelObject.saveAs("C:/test.xlsx")- 我收到以下错误:
Traceback (most recent call last):
File "C:\workspace\Utilities\src\util\excel.py", line 201, in <module>
excel.saveAs("C:/test.xlx")
File "C:\workspace\Utilities\src\util\excel.py", line 185, in saveAs
self.workbook.SaveAs(newFileName)
File "<COMObject Open>", line 7, in SaveAs
pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, u'Microsoft Office Excel', u"Microsoft Office Excel cannot access the file 'C:\\//8CBD2000'. There are …Run Code Online (Sandbox Code Playgroud) 我喜欢Python,因为它包括电池,我使用内置功能,为我做脏事.
我一直在愉快地使用os.path模块来处理文件路径,但最近我在Ubuntu linux下的Python 2.5上得到了意想不到的结果,同时处理代表Windows文件路径的字符串:
filepath = r"c:\ttemp\FILEPA~1.EXE"
print os.path.basename(filepath)
'c:\\ttemp\\FILEPA~1.EXE']
print os.path.splitdrive(filepath)
('', 'c:\ttemp\\FILEPA~1.EXE')
Run Code Online (Sandbox Code Playgroud)
WTF?
它以与filepath = u"c:\ ttemp\FILEPA~1.EXE"和filepath ="c:\ ttemp\FILEPA~1.EXE"相同的方式结束.
你有线索吗?Ubuntu使用UTF8,但我不觉得它与它有关.也许我的Python安装搞砸了,但我没有对它进行任何特别的调整,我记得.
import os
Current_Directory = os.getcwd() # Should be ...\archive
CORPUS_PATHS = sorted([os.path.join("archive", directories) for directories in os.listdir(Current_Directory)])
filenames = []
for items in CORPUS_PATHS:
filenames.append(sorted([os.path.join(CORPUS_PATHS, fn) for fn in os.listdir(items)]))
print filenames
Run Code Online (Sandbox Code Playgroud)
我正在从一个名为archive的文件运行此代码,并且在archive中有更多文件夹,并且在每个这些文件夹中都有一个或多个文本文件。我要创建一个列表,其中包含每个这些文件夹的路径。但是,出现以下错误。
[Error 3] The system cannot find the path specified:
Run Code Online (Sandbox Code Playgroud)
我目前有python脚本,在该脚本中,我在与存档相同的文件夹中编写了此代码,它将触发此错误。我应该怎么做才能停止此错误并获取所有文件路径。
我不太擅长使用os,而且我不经常使用它,因此,如果这是一个琐碎的问题,我深表歉意。
import os
startpath = "archive"
corpus_path = sorted([os.path.join("archive/", directories) for directories in os.listdir(startpath)])
filenames = []
for items in corpus_path:
print items
path = [os.path.join(corpus_path, fn) for fn in os.listdir(items)]
print path
Run Code Online (Sandbox Code Playgroud)
所以我取得了一些进展,现在我的语料库路径实质上是一个包含所有所需文件夹路径的列表。现在,我要做的就是获取这些文件夹中文本文件的所有路径,但是我仍然遇到问题,我不知道如何解决,但是出现诸如
File "C:\Users\David\Anaconda\lib\ntpath.py", …Run Code Online (Sandbox Code Playgroud) 这应该很容易,但我坚持太多了.
如何连接两个文件夹名称?
例如:
ws = r'C:\Temp'
folder = "Test"
Run Code Online (Sandbox Code Playgroud)
我希望得到一个结果,c:\Temp\Test但我所做的一切都会产生c:\TempTest.
我无法使用,+ "\"因为它是无效的操作.
import os
import random
os.chdir("C:\Users\Mainuser\Desktop\Lab6")
#Am i supposed to have a os.chdir?
# I think this is what's giving the error
#how do i fix this?
def getDictionary():
result = []
f = open("pocket-dic.txt","r")
for line in f:
result = result + [ line.strip() ];
return result
def makeText(dict, words=50):
length = len(dict)
for i in range(words):
num = random.randrange(0,length)
words = dict[num]
print word,
if (i+1) % 7 == 0:
print
Run Code Online (Sandbox Code Playgroud)
Python给我一个错误,说它无法找到指定的路径,当我在桌面上清楚地有一个带有该名称的文件夹时.它可能是os.chidr ?? 我究竟做错了什么?