Python 如何使用cygwin从posix切换到windows
我正在编写一个用cygwin执行的python脚本。它所做的一件事就是调用pg_dump并向其传递一个文件名。我的问题是,python/cygwin正在向它传递一个posix路径,而windows版本的pg_dump不知道如何处理它。我可以调用一些东西将posix路径转换为windows路径吗 我要转换此路径Python 如何使用cygwin从posix切换到windows,python,cygwin,Python,Cygwin,我正在编写一个用cygwin执行的python脚本。它所做的一件事就是调用pg_dump并向其传递一个文件名。我的问题是,python/cygwin正在向它传递一个posix路径,而windows版本的pg_dump不知道如何处理它。我可以调用一些东西将posix路径转换为windows路径吗 我要转换此路径 /cygdrive/c/Users/me/Code/myproj/pyBuildScript/src/snapshooter/working/sso.sql 到 您可以阅读手册页了解更多
/cygdrive/c/Users/me/Code/myproj/pyBuildScript/src/snapshooter/working/sso.sql
到
您可以阅读手册页了解更多开关。其中
- -w代表窗户
- -u for unix
- -绝对路径
您需要小心转义,确保path参数是单个shell单词。您可以执行以下操作:
>>> posix_str = "/cygdrive/c/Users/me/Code/myproj/pyBuildScript/src/snapshooter/working/sso.sql"
>>> nt_str = "C:" + posix_str[11:]
>>> nt_str = nt_str.replace("/", "\\")
>>> print nt_str
C:\Users\me\Code\myproj\pyBuildScript\src\snapshooter\working\sso.sql
所以,我在脚本之前运行cygpath?是的,比如:
your\u program\u here.py“$(cygpath-w“$P”)”
cygpath -w
>>> posix_str = "/cygdrive/c/Users/me/Code/myproj/pyBuildScript/src/snapshooter/working/sso.sql"
>>> nt_str = "C:" + posix_str[11:]
>>> nt_str = nt_str.replace("/", "\\")
>>> print nt_str
C:\Users\me\Code\myproj\pyBuildScript\src\snapshooter\working\sso.sql