Python的os.path库在C#中等效

时间:2011-02-11 21:48:56

标签: c# python path

假设我在C#代码ae /a/b/c/xyz.exe中有一个二进制文件,它需要/a/b/c/hello.txt在同一目录中。如何在完整路径中获取/a/b/c/hello.txt?

在python中,我可以使用os.path.abspath(sys.argv[0])获取正在运行的程序的路径,并且我可以使用dirname()获取目录信息,并且我可以使用join()来获取新的完整路径。

import sys
from os.path import *
newName = join(dirname(abspath(sys.arg[0]), "hello.txt")

C#如何做同样的事情?

2 个答案:

答案 0 :(得分:5)

您可以使用Environment.CurrentDirectoryEnvironment.GetCommandLineArgsSystem.IO.Path中的类来执行相同的操作。您的代码将翻译为:

// using System.IO;

string newPath = Path.Combine(
               Path.GetDirectoryName(
                     Path.GetFullPath(Environment.GetCommandLineArgs[0])
               ), "hello.txt");

但是,如果在调用此目录之前当前目录已更改,则此操作将失败。 (它也会在python中......)使用以下内容可能更好:

// using System.IO;
// using System.Reflection;

string newPath = Path.Combine(
                    Path.GetDirectoryName(Assembly.GetEntryAssembly().Location)
               , "hello.txt");

答案 1 :(得分:1)

使用Application.StartupPath

请参阅:http://msdn.microsoft.com/en-us/library/system.windows.forms.application.startuppath(v=vs.71).aspx

如果自程序启动以来已更改当前目录,则该目录将失败。