我想从主python文件运行的文件从他们自己的目录运行

时间:2017-10-28 22:12:32

标签: python windows python-3.x operating-system

示例:

我的主文件main.py包含以下代码:

pip install pyserial

然后我的另一个文件subfile.py包含以下代码:

import os
os.popen("start folder/subfile.py")

我希望我的subfile.py在自己​​的文件夹中创建test.txt文件,但是它会在main.py的文件夹中创建它。

所以我的问题是,如何从自己的文件夹运行subfile.py,即使它是从main.py开始的

main.py文件夹:C:/ users / user / Desktop

subfile.py文件夹:C:/ users / user / Desktop / folder

3 个答案:

答案 0 :(得分:1)

subfile.py中,将工作目录(os.chdir)更改为包含subfile.py 文件的目录:

import os
os.chdir(os.path.dirname(__file__))

答案 1 :(得分:1)

您可以使用内置的子进程代替:

public class MyUITypeEditor : UITypeEditor
{
    public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context)
    {
        return UITypeEditorEditStyle.Modal;
    }
    public override object EditValue(ITypeDescriptorContext context,
        IServiceProvider provider, object value)
    {
        var svc = provider.GetService(typeof(IWindowsFormsEditorService))
            as IWindowsFormsEditorService;
        var myGenericTypeProperty = context.Instance.GetType()
            .GetProperty("MyGenericType");
        var genericArgument = (Type)myGenericTypeProperty.GetValue(context.Instance);
        var editorFormType = typeof(MyEditorForm<>);
        var genericArguments = new[] { genericArgument };
        var editorFormInstance = editorFormType.MakeGenericType(genericArguments);
        if (svc != null)
        {
            using (var f = (Form)Activator.CreateInstance(editorFormInstance))
                if (svc.ShowDialog(f) == DialogResult.OK)
                    return ((dynamic)f).SelectedProperty;
        }
        else
        {
            using (var f = (Form)Activator.CreateInstance(editorFormInstance))
                if (f.ShowDialog() == DialogResult.OK)
                    return ((dynamic)f).SelectedProperty;
        }
        return base.EditValue(context, provider, value);
    }
}

答案 2 :(得分:0)

试试这个:

import os
import inspect

your_current_folder_path = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
your_current_file_path = os.path.join(your_current_folder_path, "test.txt")

print(your_current_folder_path)
print(your_current_file_path)


with open(your_current_file_path, "w") as make_file:
    make_file.write("")

print("Done.")

另一种方法:您可以通过os.chdir(“your_folder_directory”)函数更改工作目录。

os.chdir(r"C:/users/user/Desktop/folder")