示例:
我的主文件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
答案 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")