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

pro*_*eek 4 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")
Run Code Online (Sandbox Code Playgroud)

C#怎么能做同样的事情?

Ree*_*sey 5

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

// using System.IO;

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

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

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

string newPath = Path.Combine(
                    Path.GetDirectoryName(Assembly.GetEntryAssembly().Location)
               , "hello.txt");
Run Code Online (Sandbox Code Playgroud)