这就是我想要做的事情:
import copy
def printtext(swefile):
for row in swefile:
print(row)
text = open("wordsv.txt","r",encoding="utf-8")
text2 = copy.copy(text)
printtext(text)
print(text2.readlines())
Run Code Online (Sandbox Code Playgroud)
但这是不可能的,TypeError:无法序列化'_io.TextIOWrapper'对象.所以我想知道是否有一种很好的"克隆"文本变量的方法,这样我就可以再次打印所有的行.我知道我可以再次阅读该文件,但是这个答案并没有解决我遇到的更大的问题,所以任何有关如何完成这项工作的建议都是有帮助的.
这是更大的背景,因为我无法用你的建议解决我的问题:
with open(textfilename, "r", encoding = "utf-8") as swefile:
for row in swefile:
word = row.strip()
tempfile = copy.copy(swefile)
l = getFurthest(word,tempfile)
Run Code Online (Sandbox Code Playgroud)
我想在这里发生的事情是,我想发送swefile尚未读取的部分(即通过for循环迭代)getFurthest()!而且我无法发送,swefile因为这将使整个事情被读取,因此for循环中的迭代将停止,对吧?那么我怎样才能只发送已经读过的文本文件的一部分,getFurthest()同时仍然可以在其余部分之后迭代?
该程序检查分子式.我希望程序在检测到公式中的错误时立即退出.例如,公式"a"不正确.当我通过我的代码运行它时:
def readletter():
if q.peek() in string.ascii_lowercase:
print(q.peek())
return q.get()
else:
raise Formelfel("Förväntad liten bokstav.")
def readLetter():
if q.peek() in string.ascii_uppercase:
print(q.peek())
return q.get()
else:
raise Formelfel("Förväntad stor bokstav.")
def readAtom():
X = ""
try:
X += readLetter()
except Formelfel:
print("Missing capital letter at end of row "+getRest())
sys.exit()
return
try:
x = readletter()
atom = X+x
except (Formelfel, TypeError):
atom = X
if atom in ATOMER:
return
else:
raise Formelfel("Okänd atom.")
def readGroup():
if q.peek() in string.ascii_uppercase or q.peek() …Run Code Online (Sandbox Code Playgroud) 我有以下程序,我想用我的名字(Sahand)逐个字符地读取并存储在一个字符串中:
#include <stdio.h>
int main(int argc, const char * argv[]) {
char temp;
char str[6];
int i;
for ( i = 0 ; i < 6 ; i++ )
{
scanf(" %c",&temp);
printf("Our temp is: %c\n",temp);
str[i] = temp;
printf("Our total string is: %s\n",str);
}
printf("Program ended with the string: %s\n",str);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出是这样的:
s
Our temp is: s
Our total string is: s
a
Our temp is: a
Our total string is: sa
h
Our temp is: h …Run Code Online (Sandbox Code Playgroud) 这是一个无限循环程序,我添加了行号打印以方便跟踪程序执行。
def infinite_looper(objects):
count = 0
print("row 35")
while True:
print("row 37")
if count >= len(objects):
count = 0
print("Row 40")
message = yield objects[count]
print("row 42")
print("The message is "+str(message))
print("row 44")
if message != None:
count = 0 if message < 0 else message
print("row 47, count = "+str(count))
else:
count += 1
print("row 50")
print("Row 51")
x = infinite_looper("abcdefghijkl")
print("executing next 1st time")
print(next(x))
print("executing next 2nd time")
print(next(x))
print("executing send 1st time")
print(x.send(10))
Run Code Online (Sandbox Code Playgroud)
输出是:
executing next …Run Code Online (Sandbox Code Playgroud) 我想转这个清单:
['1','2','3','4']
Run Code Online (Sandbox Code Playgroud)
进入这个字符串:
"%(1)s, %(2)s, %(3)s, %(4)s"
Run Code Online (Sandbox Code Playgroud)
我怎么能这样做,最好是在一线?