Полагаю, вы могли бы добавить
import sys
sys.path.append('subdir')
from subdir import sub1
к вашему main.py
, таким образом, он получит все относительные значения импорта в этой подпапке для вас, нет необходимости каждый раз вызывать подпапку
и в sub1.py
просто
from sub2 import foo
Я успешно использовал freopen (...) по телефону для перенаправления вывода в мой собственный файл.
Если Вы хотите использовать Какао, NSString и NSData имеют методы для чтения/записи в файл, и NSFileManager дает Вам операции файла. Вот пример (должен работать над iPhone):
NSData *dataToWrite = [[NSString stringWithString:@"String to write"] dataUsingEncoding:NSUTF8StringEncoding];
NSString *docsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *path = [docsDirectory stringByAppendingPathComponent:@"fileName.txt"];
// Write the file
[dataToWrite writeToFile:path atomically:YES];
// Read the file
NSString *stringFromFile = [[NSString alloc] initWithContentsOfFile:path];
// Check if file exists
NSFileManager *fileManager = [NSFileManager defaultManager];
[fileManager fileExistsAtPath:path]; // Returns a BOOL
// Remove the file
[fileManager removeItemAtPath:path error:NULL];
// Cleanup
[stringFromFile release];
[fileManager release];
Этот код работает на меня:
- (void)applicationDidFinishLaunching:(UIApplication *)application {
#if TARGET_IPHONE_SIMULATOR == 0
freopen([@"/tmp/my_logs.txt" fileSystemRepresentation], "w", stderr);
#endif
}
Этот код отлично подходит для меня ..
#if TARGET_IPHONE_SIMULATOR == 0
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *logPath = [documentsDirectory stringByAppendingPathComponent:@"console.log"];
freopen([logPath cStringUsingEncoding:NSASCIIStringEncoding],"a+",stderr);
#endif
Вы можете получить файл журнала с iPhone, используя метод, указанный здесь http://blog.coriolis.ch/2009 / 01/09 / Redirect-nslog-to-a-file-on-iPhone / # TOR-85
Обратите внимание, что использование FreoPen остановит консоль в работе XCode .. Однако по какой-то причине консоль вы можете Вид на Организатор XCode еще отлично работает.