我想创建一个从txt文件中读取的函数,用户在函数上给出的函数。我知道如何在python上打开一个特定的文件,但我不知道如何在函数上创建任何文件。
例如,我想做这样的事情: Read_board(irock.txt)--- irock.txt,可以是任何其他的fale,它是函数接收的参数。读取文件中的行并将其返回。
这是我的最终代码
def le_tabuleiro(txt):
text = ((open(txt, 'r')).readline())
print text
谢谢大家。
答案 0 :(得分:0)
您需要读取文件对象,而不是其名称。试试这个:
public Observable<Bitmap> mObservable;
Subscriber<Bitmap> mSubscriber;
Subscription mSubscription;
Bitmap loadedBitmap;
....
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
if (savedInstanceState != null) {
loadedBitmap = savedInstanceState.getParcelable("LoadedBitmap");
imageView.setImageBitmap(loadedBitmap);
}
else {
runNewObservable();
}
runSubscribe();
return mainView;
}
....
private void runNewObservable () {
mObservable =
Observable.create(new Observable.OnSubscribe<Bitmap>() {
@Override
public void call(Subscriber<? super Bitmap> subscriber) {
subscriber.onNext(new LoadingImage().loadImageFrom(imageURL));
subscriber.onCompleted();
}
})
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.cache();
}
private void runNewSubscribe () {
mSubscriber = new Subscriber<Bitmap>() {
@Override
public void onCompleted() { }
@Override
public void onError(Throwable e) { }
@Override
public void onNext(Bitmap bitmap) {
loadedBitmap = bitmap;
imageView.setImageBitmap(bitmap);
}
};
}
@Override
public void onResume() {
super.onResume();
mSubscription = mObservable.subscribe(mSubscriber);
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putParcelable("LoadedBitmap", loadedBitmap);
}
@Override
public void onStop() {
super.onStop();
mSubscription.unsubscribe();
}
....
另请注意,def read_board(f):
ficheiro = open(f, "r")
line = ficheiro.readline()
return line
是包含文件名的字符串,因此将未加引号的变量传递给f
。
值得一提的另一件事是你可以/应该使用open()
语句来打开文件。这将确保在函数返回后(或者如果有异常)正确关闭文件:
with