Добавление к файлу
out_file
не является списком. Вы должны использовать метод write()
для записи в файл. Также print(out_file)
печатает представление объекта, а не содержимое файла.
Просто замените out_file.append()
на out_file.write()
:
score = '11'
gametag = 'Griminal'
with open("scores.txt", "a") as out_file:
out_string = str(score) + " points from: " + str(gametag) + "\n"
print(out_string)
out_file.write(out_string)
Сортировка файла
Насколько я знаю, не существует простого способа сортировки файл на месте. Может быть, другие люди могут предложить вам лучший способ, но я бы прочитал весь файл в списке (каждая строка файла как элемент списка), отсортировал его и затем снова сохранил в файле. Это, конечно, если вам нужен сам файл, который будет отсортирован. Если ваша сортировка предназначена только для печати (то есть вам не важно, отсортирован ли сам файл), просто сохраните новую оценку в файле, затем прочитайте ее и попросите скрипт отсортировать вывод перед печатью.
Вот как вы можете прочитать и распечатать результат сортировки:
with open("scores.txt", "r") as scores:
lines = scores.readlines() #reads all the lines
sortedlines = sorted(lines, key=lambda x: int(x.split()[0]), reverse=True) #be sure of the index on which to sort!
for i in sortedlines[:5]: #the first 5 only
print(i)
x.split()
разбивает каждую строку на список слов, используя пробелы в качестве разделителя. Здесь я использую индекс 0, потому что после предыдущего ввода out_string = str(score) + " points from: " + str(gametag) + "\n"
оценка находится в первом элементе списка.
Если вам нужно снова сохранить файл, вы можете перезаписать его, написав в нем sortedlines
.
with open("scores.txt", "w") as out_file: #mode "w" deletes any previous content
for i in sortedlines:
out_file.write(i)
Да, есть два типа тайм-аута, которые можно установить
Оба значения по умолчанию равны 30 секундам в VBA, .net и т. Д.
As gbn already mentioned, there are two types of timeouts:
1) Connection Timeout: this is controlled by your connection string:
Data Source=.;Initial Catalog=TestDB;
Trusted_Connection=true;Asynchronous Processing=true
If you add a Connect Timeout=120
to this string, your connection will try for 120 seconds to get opened and then aborts.
Data Source=.;Initial Catalog=TestDB;
Trusted_Connection=true;Asynchronous Processing=true;
Connect Timeout=120;
2) Command timeout: for each command, you can also specify a timeout - ADO.NET will wait for that amount of time before cancelling out your query. You specify that on the SqlCommand object:
using (SqlCommand RetrieveOrderCommand = new SqlCommand())
{
RetrieveOrderCommand.CommandTimeout = 150;
}