Saya memiliki skrip python ini di mana saya harus menjalankan gdal_retile.py
tapi saya mendapatkan pengecualian pada baris ini:
if Verbose:
print("Building internam Index for %d tile(s) ..." % len(inputTiles), end=' ')
The end=''
sintaks tidak valid. Saya ingin tahu mengapa, dan apa yang mungkin ingin dilakukan oleh penulisnya.
Saya baru mengenal python jika Anda belum menebaknya.
Saya pikir akar penyebab masalahnya adalah bahwa impor ini gagal dan oleh karena itu impor ini harus dihentikan from __future__ import print_function
try:
from osgeo import gdal
from osgeo import ogr
from osgeo import osr
from osgeo.gdalconst import *
except:
import gdal
import ogr
import osr
from gdalconst import *
__future__
impor.ClassNames
harus dimulai dengan huruf kecil.Jawaban:
Apakah Anda yakin Anda menggunakan Python 3.x? Sintaksnya tidak tersedia di Python 2.x karena
print
masih berupa pernyataan.di Python 2.x identik dengan
atau
yaitu sebagai panggilan untuk mencetak dengan tupel sebagai argumen.
Itu jelas sintaks yang buruk (literal tidak mengambil argumen kata kunci). Dalam Python 3.x
print
adalah fungsi sebenarnya, jadi dibutuhkan argumen kata kunci juga.Idiom yang benar dalam Python 2.x
end=" "
adalah:(perhatikan koma terakhir, ini membuatnya mengakhiri baris dengan spasi, bukan pemisah baris)
Jika Anda ingin lebih mengontrol output, pertimbangkan untuk menggunakan
sys.stdout
secara langsung. Ini tidak akan melakukan keajaiban khusus dengan hasilnya.Tentu saja dalam versi Python 2.x yang agak baru (seharusnya 2.5 memilikinya, tidak yakin tentang 2.4), Anda dapat menggunakan
__future__
modul untuk mengaktifkannya di file skrip Anda:Hal yang sama berlaku dengan
unicode_literals
dan beberapa hal baik lainnya (with_statement
, misalnya). Ini tidak akan berfungsi di versi yang benar-benar lama (yaitu dibuat sebelum fitur diperkenalkan) dari Python 2.x.sumber
dpkg -p python
dan itu versi 2.xx.xx. Terima kasih banyak, saya menerapkan saran untuk menaruhnya dalam bentukprint "foo" %bar,
dan itu bekerja dengan baik.print foo, bar
danprint (foo, bar)
di Python 2. Yang pertama adalahprint
pernyataan dengan dua item dalam daftar "argumen"; yang terakhir adalahprint
pernyataan dengan satu tupel dalam daftar argumennya.print("foo" % bar, end=" ")
tidak akan berhasil, karenabar
tidak ditentukan; jadi apabar
contoh Anda? (Setidaknya bagi saya dengan Python 3.7)Bagaimana dengan ini:
Ini memungkinkan Anda untuk menggunakan
print
fungsi gaya Python 3.0 tanpa harus mengedit sendiri semua kejadianprint
:)sumber
Di python 2.7 inilah cara Anda melakukannya
Dalam python 3.x
sumber
h a c k e r
ada spasi di antara karakter. Saya menggunakan Python 3.7.3 dan saya tidak mendapatkan spasi sama sekaliend=''
.Pertama-tama, Anda kehilangan kutipan di awal tetapi ini mungkin kesalahan salin / tempel.
Dalam Python 3.x,
end=' '
bagian tersebut akan menempatkan spasi setelah string yang ditampilkan, bukan baris baru. Untuk melakukan hal yang sama dengan Python 2.x, Anda akan meletakkan koma di akhir:sumber
Saya pikir dia menggunakan Python 3.0 dan Anda menggunakan Python 2.6.
sumber
print("foo" % bar, end = " ")
memicu kesalahan sintaks di Python 2.6 di bawahend = " "
seperti kutipan yang hilang tidak :)Ini hanya masalah versi. Karena Python 3.x cetakan sebenarnya adalah sebuah fungsi, jadi sekarang dibutuhkan argumen seperti fungsi normal lainnya.
Ini
end=' '
hanya untuk mengatakan bahwa Anda menginginkan spasi setelah akhir pernyataan, bukan karakter baris baru. Dalam Python 2.x Anda harus melakukan ini dengan menempatkan koma di akhir pernyataan cetak.Misalnya, saat berada di lingkungan Python 3.x:
Akan memberikan hasil sebagai berikut:
Dimana sebagai:
Akan diberikan sebagai output:
sumber
print()
mungkin berguna, karena di sana seseorang dapat melihat nilai default'\n'
untuk argumenend
: docs.python.org/3/library/functions.html#printSepertinya Anda baru saja melewatkan tanda kutip ganda pembuka. Mencoba:
sumber
Saya pikir penulis mungkin bermaksud:
Dia kehilangan kutipan awal setelahnya
print(
.Perhatikan bahwa pada Python 3.0 ,
print
fungsinya berlawanan dengan pernyataan, jika Anda menggunakan versi Python yang lebih lama, padanannya adalah:The
end
parameter berarti bahwa garis mendapat' '
di akhir daripada karakter baris baru. Yang setara di versi Python sebelumnya adalah:(terima kasih Ignacio).
sumber
,
di akhir akan berhasil.GUNAKAN ::
python3 filename.py
Saya mengalami kesalahan seperti itu, ini terjadi karena saya menginstal dua versi python pada drive saya yaitu python2.7 dan python3. Berikut adalah kode saya:
ketika saya menjalankannya dengan perintah
python lines.py
saya mendapat kesalahan berikutketika saya menjalankannya dengan perintah yang
python3 lines.py
saya jalankan dengan suksessumber
Untuk python 2.7 Saya memiliki masalah yang sama Cukup gunakan " dari __future__ import print_function " tanpa tanda kutip untuk mengatasi masalah ini. Ini Memastikan Python 2.6 dan yang lebih baru Python 2.x dapat menggunakan fungsi cetak Python 3.x.
sumber
Coba yang ini jika Anda bekerja dengan python 2.7:
sumber
Bahkan saya mendapatkan kesalahan yang sama hari ini. Dan saya telah mengalami hal yang menarik. Jika Anda menggunakan python 3.x dan masih mendapatkan kesalahan, itu mungkin alasannya:
Saya mendapatkan kesalahan yang sama hari ini, dan memperhatikan hal itu. Percayalah, ketika saya mengeksekusi kode saya dari jendela shell yang tepat (versi 3.x), saya mendapat hasil yang memuaskan
sumber
kita perlu mengimpor header sebelum menggunakan
end=''
, karena tidak termasuk dalam runtime normal python.itu akan bekerja dengan sempurna sekarang
sumber
Kompatibel dengan kedua Python 2 & 3 :
Kompatibel hanya dengan Python 2
Kompatibel hanya dengan Python 3
sumber