我是初学者。 我的系统是win10 Pro,我使用的是python3.X。
我使用此代码来测试函数“ os.path.join()”和“ os.path.dirname()”。
private Dictionary<DeviceConnectionTypeEnum, IConnector> m_DeviceConnectorToType ..... <-you need to populate this dicionary
private IEnumrable<DeviceCredentialsModel> getDevicesCredentials()
{
#get from db of configuration
}
void connectToAllDevices()
{
var devices = getDevicesCredentials();
foreach(device in devices)
{
var encryptedPassword = device.password;
var decryptedPassword = ...decrypt;
var deviceConnectionTypeEnum = device.DeviceConnectionTypeEnum;
IConnector deviceConnector = m_DeviceConnectorToType[deviceConnectionTypeEnum];
deviceConnector.connect(device.ip, v.user, decryptedPassword);
}
}
输出为:
E:/ test_opencv \ dateConfig.ini
我发现os.path.join()使用“ /”,但是os.path.dirname()使用“ \”,为什么?
如果我要使用相同的分隔符,则全部为'/'或'\',我该怎么办?
答案 0 :(得分:0)
这是因为__file__
包含传入参数的脚本名称。
如果您运行
python E:/test_opencv/myscript.py
然后__file__
确切包含传递给python
的参数。 (Windows使用os.altsep
作为/
,因为它可以使用此备用分隔符)
一种好的修复方法是使用os.path.normpath
用官方分隔符替换备用分隔符,删除双分隔符,...
print(os.path.join(os.path.normpath(os.path.dirname(__file__)),"dateConfig.ini"))
当运行不支持斜杠/将其视为选项开关的旧版Windows命令时,标准化路径可能会很有用。如果仅使用传递给open
的路径,则不需要。